当前位置:首页 > JavaScript

js实现同时发多个请求

2026-01-31 07:53:42JavaScript

并发请求的实现方法

在JavaScript中实现同时发送多个请求,可以通过以下几种方式实现:

Promise.all

使用Promise.all可以并行执行多个异步请求,并在所有请求完成后统一处理结果。适用于需要等待所有请求完成后再进行后续操作的场景。

const urls = ['url1', 'url2', 'url3'];
const requests = urls.map(url => fetch(url));

Promise.all(requests)
  .then(responses => Promise.all(responses.map(res => res.json())))
  .then(data => console.log(data))
  .catch(error => console.error(error));

Promise.allSettled

Promise.all类似,但不会因为某个请求失败而中断,会等待所有请求完成(无论成功或失败)。适用于需要处理部分失败请求的场景。

const urls = ['url1', 'url2', 'url3'];
const requests = urls.map(url => fetch(url));

Promise.allSettled(requests)
  .then(results => {
    results.forEach(result => {
      if (result.status === 'fulfilled') {
        console.log(result.value);
      } else {
        console.error(result.reason);
      }
    });
  });

async/await结合循环

使用async/await语法结合循环可以更直观地处理并发请求。适用于需要按顺序处理结果的场景。

async function fetchAll(urls) {
  const results = [];
  for (const url of urls) {
    try {
      const response = await fetch(url);
      results.push(await response.json());
    } catch (error) {
      console.error(`Failed to fetch ${url}:`, error);
    }
  }
  return results;
}

fetchAll(['url1', 'url2', 'url3']).then(data => console.log(data));

使用第三方库

某些第三方库(如axios)提供了更简洁的并发请求方式。适用于项目已使用该库的场景。

const axios = require('axios');
const urls = ['url1', 'url2', 'url3'];

axios.all(urls.map(url => axios.get(url)))
  .then(axios.spread((...responses) => {
    console.log(responses.map(res => res.data));
  }))
  .catch(error => console.error(error));

注意事项

  • 浏览器对并发请求数有限制(通常为6-8个),超出限制的请求会被排队。
  • 大量并发请求可能导致服务器压力过大,需合理控制并发数量。
  • 错误处理是并发请求中的重要环节,应确保每个请求都有适当的错误处理机制。

以上方法可根据具体需求选择使用,Promise.allPromise.allSettled是最常用的原生解决方案。

js实现同时发多个请求

标签: 多个js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

js实现验证码

js实现验证码

实现验证码的JavaScript方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

vue实现多个图表展示

vue实现多个图表展示

使用 Vue 实现多个图表展示 安装图表库 推荐使用 ECharts 或 Chart.js,两者均支持 Vue 集成。以 ECharts 为例,安装依赖: npm install echart…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…