当前位置:首页 > JavaScript

js怎么实现异步并行

2026-03-01 18:49:47JavaScript

异步并行实现方法

在JavaScript中实现异步并行操作通常涉及以下几种方法:

Promise.all()

使用Promise.all()可以并行执行多个Promise,并在所有Promise都完成时返回结果数组。若其中一个Promise被拒绝,整个Promise.all()会立即拒绝。

const promise1 = fetch('https://api.example.com/data1');
const promise2 = fetch('https://api.example.com/data2');
const promise3 = fetch('https://api.example.com/data3');

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values); // 所有请求结果的数组
  })
  .catch(error => {
    console.error(error); // 任一请求失败时的错误
  });

Promise.allSettled()

Promise.all()不同,Promise.allSettled()会等待所有Promise完成(无论成功或失败),并返回每个Promise的状态和结果。

Promise.allSettled([promise1, promise2, promise3])
  .then(results => {
    results.forEach(result => {
      if (result.status === 'fulfilled') {
        console.log(result.value);
      } else {
        console.error(result.reason);
      }
    });
  });

async/await结合Promise.all()

async函数中,可以使用await Promise.all()实现并行异步操作。

async function fetchAllData() {
  try {
    const [data1, data2, data3] = await Promise.all([promise1, promise2, promise3]);
    console.log(data1, data2, data3);
  } catch (error) {
    console.error(error);
  }
}

并行循环处理

对于需要并行处理数组中的每个元素的情况,可以结合map()Promise.all()

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

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

限制并发数

在某些场景下需要限制并发数,可以使用第三方库(如p-limit)或自定义实现。

js怎么实现异步并行

const limit = require('p-limit');
const concurrencyLimit = limit(2); // 限制并发数为2

const tasks = [
  concurrencyLimit(() => fetch('url1')),
  concurrencyLimit(() => fetch('url2')),
  concurrencyLimit(() => fetch('url3'))
];

Promise.all(tasks)
  .then(results => console.log(results));

注意事项

  • 并行操作会同时发起多个请求或任务,需注意资源消耗和速率限制。
  • 在Node.js中,文件I/O或CPU密集型任务可以使用worker_threads实现真正的并行。
  • 浏览器环境中,大量并行请求可能会触发HTTP/2的多路复用限制。

标签: js
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现按钮点击

js实现按钮点击

实现按钮点击的JavaScript方法 HTML按钮元素 在HTML中创建按钮元素,为其添加id或class以便JavaScript选择: <button id="myButton">点…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…