还在用 Promise.all?2025 必学的高性能并发控制 API 来了

AI 概述
Promise.allSettled 的优势基本用法与 Promise.all 的对比实际应用场景批量数据处理API 请求聚合并发任务管理其他并发控制 API 在 JavaScript 异步编程的世界里,Promise.all一直是并发控制的主要工具。然而,它存在一个明显的短板:一旦其中一个任务失败,整个流程就会停止,所有其他任务的结果都无...
目录
文章目录隐藏
  1. Promise.allSettled 的优势
  2. 实际应用场景
  3. 其他并发控制 API

还在用 Promise.all?2025 必学的高性能并发控制 API 来了

在 JavaScript 异步编程的世界里,Promise.all一直是并发控制的主要工具。然而,它存在一个明显的短板:一旦其中一个任务失败,整个流程就会停止,所有其他任务的结果都无法获取。如今,一个更强大的 API 已经成为开发者处理并发任务的理想选择。

Promise.allSettled 的优势

Promise.allSettled是 JavaScript 提供的并发控制 API,它允许你等待所有 Promise 完成(无论是履行还是拒绝),并获取每个 Promise 的最终状态和结果。与Promise.all不同,Promise.allSettled不会因为单个 Promise 拒绝而短路,它会继续等待所有 Promise 完成。

基本用法

const promises = [
    Promise.resolve(1),
    Promise.reject("出错了"),
    Promise.resolve(3)
];
Promise.allsettled(promises)
  .then(results => {
    console.log(results);
    // [
    //    { status: "fulfilled", value:1 },
    //    { status: "rejected", reason:"出错了" },
    //    { status: "fulfilled", value:3 }
    // ]
  });

与 Promise.all 的对比

Promise.all在处理多个异步任务时,一旦有一个 Promise 被拒绝,整个Promise.all就会立即拒绝,不会等待其他 Promise 完成。这在某些场景下可能是期望的行为,但在很多情况下,我们希望即使部分任务失败,也能获取所有任务的结果。

实际应用场景

批量数据处理

当你需要处理大量独立的数据项,且每个处理过程都可能失败时,Promise.allSettled 是理想的选择。

async function processItems(items) {
    const promises = items.map(item => processItem(item));
    const results = await Promise.allSettled(promises);
    const succeeded = results
      .filter(result => result.status ==="fulfilled")
      .map(result => result.value);
    const failed = results
      .filter(result => result.status === "rejected")
      .map(result => result.reason);
    return { succeeded, failed };
}

API 请求聚合

当你需要向多个端点发送请求,并且需要汇总所有结果时,Promise.allSettled能够确保你获得所有可用数据,即使部分请求失败。

并发任务管理

当你有多个独立的任务需要并行执行,每个任务的成功或失败不应影响其他任务时,Promise.allSettled是更安全的选择。

其他并发控制 API

除了Promise.allSettled,JavaScript 还提供了其他并发控制 API:

  • Promise.all:当所有 Promise 都需要成功时使用
  • Promise.race:当只需要最快完成的 Promise 结果时使用
  • Promise.any:当只需要获取第一个成功的 Promise 结果时使用

Promise.allSettled为 JavaScript 开发者提供了更强大的并发控制能力。在处理多个异步任务时,它能确保获取所有任务的最终状态,无论成功与否,这使得错误处理和结果处理变得更加灵活和可靠。

以上关于还在用 Promise.all?2025 必学的高性能并发控制 API 来了的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。

「点点赞赏,手留余香」

1

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 还在用 Promise.all?2025 必学的高性能并发控制 API 来了

发表回复