当前位置:首页 > JavaScript

js如何实现并发请求

2026-01-31 01:29:05JavaScript

实现并发请求的方法

在JavaScript中,可以通过多种方式实现并发请求,主要利用异步编程的特性。以下是几种常见的方法:

使用Promise.all

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

js如何实现并发请求

const fetchData1 = fetch('https://api.example.com/data1');
const fetchData2 = fetch('https://api.example.com/data2');

Promise.all([fetchData1, fetchData2])
  .then(responses => Promise.all(responses.map(res => res.json())))
  .then(data => {
    console.log(data[0]); // 第一个请求的结果
    console.log(data[1]); // 第二个请求的结果
  })
  .catch(error => console.error('Error:', error));

使用Promise.allSettled

Promise.allSettled 类似于 Promise.all,但不会因为某个请求失败而中断,而是会返回所有请求的状态(成功或失败)。

const promises = [
  fetch('https://api.example.com/data1'),
  fetch('https://api.example.com/data2')
];

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

使用async/await

结合 async/await 可以更清晰地处理并发请求,代码更易读。

js如何实现并发请求

async function fetchConcurrently() {
  try {
    const [response1, response2] = await Promise.all([
      fetch('https://api.example.com/data1'),
      fetch('https://api.example.com/data2')
    ]);
    const data1 = await response1.json();
    const data2 = await response2.json();
    console.log(data1, data2);
  } catch (error) {
    console.error('Error:', error);
  }
}

fetchConcurrently();

使用第三方库(如Axios)

Axios 提供了更简洁的API来处理并发请求。

const axios = require('axios');

axios.all([
  axios.get('https://api.example.com/data1'),
  axios.get('https://api.example.com/data2')
])
  .then(axios.spread((response1, response2) => {
    console.log(response1.data, response2.data);
  }))
  .catch(error => console.error('Error:', error));

使用Web Workers

对于CPU密集型任务,可以通过Web Workers实现真正的并行处理。Web Workers运行在独立的线程中,不会阻塞主线程。

// main.js
const worker1 = new Worker('worker1.js');
const worker2 = new Worker('worker2.js');

worker1.onmessage = event => console.log('Worker1:', event.data);
worker2.onmessage = event => console.log('Worker2:', event.data);

worker1.postMessage('start');
worker2.postMessage('start');

// worker1.js
self.onmessage = function(event) {
  fetch('https://api.example.com/data1')
    .then(response => response.json())
    .then(data => self.postMessage(data));
};

注意事项

  • 浏览器对并发请求数量有限制(通常为6个),超过限制的请求会被排队。
  • 避免滥用并发请求,过多的请求可能导致服务器压力过大。
  • 使用 Promise.all 时,如果其中一个请求失败,整个Promise会立即拒绝。

标签: 如何实现js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

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

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

vue如何实现注册

vue如何实现注册

Vue 注册功能实现步骤 注册功能通常涉及前端表单、数据验证、与后端API交互等环节。以下是基于Vue 3和Element Plus的典型实现方式: 表单设计与数据绑定 使用Vue的v-model实…

vue底层如何实现

vue底层如何实现

Vue 底层的核心实现机制 Vue 的底层实现主要围绕响应式系统、虚拟 DOM 和组件化架构展开。以下是关键技术的详细解析: 响应式系统 依赖追踪与发布订阅模式 通过 Object.define…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…