Promise.allSettled()方法的语法是什么?

简介: Promise.allSettled()方法的语法是什么?

Promise.allSettled() 是 Promise 提供的静态方法,用于等待所有传入的 Promise 完成(无论成功或失败),并返回包含所有任务结果的数组。其语法如下:

基本语法

Promise.allSettled(iterable)

参数说明

  • iterable:一个可迭代对象(通常是数组),其中可以包含 Promise 实例或非 Promise 值(如普通数字、字符串等)。
    • 若元素不是 Promise,会被自动包装为 Promise.resolve(元素)(视为成功状态)。

返回值

返回一个新的 Promise 对象,该对象的状态只会变为 fulfilled(永远不会变为 rejected),其结果是一个数组,数组中的每个元素对应传入的每个 Promise 的执行结果,结构如下:

  • 对于成功的 Promise(fulfilled):
    { status: "fulfilled", value: <成功结果> }
  • 对于失败的 promise(rejected):
    { status: "rejected", reason: <错误原因> }

示例代码

// 定义三个异步任务(2个成功,1个失败)
const promise1 = Promise.resolve("操作A成功");
const promise2 = Promise.reject(new Error("操作B失败"));
const promise3 = new Promise(resolve => {
   
  setTimeout(() => resolve resolve("操作C成功"), 1000);
});

// 使用 allSettled 等待所有任务完成
Promise.allSettled([promise1, promise2, promise3])
  .then(results => {
   
    // 遍历结果数组,处理每个任务的状态
    results.forEach((result, index) => {
   
      if (result.status === "fulfilled") {
   
        console.log(`任务${
     index + 1}成功:`, result.value);
      } else {
   
        console.log(`任务${
     index + 1}失败:`, result.reason.message);
      }
    });
  });

输出结果

任务1成功: 操作A成功
任务2失败: 操作B失败
任务3成功: 操作C成功

关键特点

  • 始终等待所有传入的任务完成(无论成功或失败)。
  • 返回的 Promise 只会成功(fulfilled),不会失败(rejected)。
  • 结果数组与传入的可迭代对象顺序一致,便于对应处理每个任务的结果。

这个方法适合需要完整掌握所有异步任务执行情况的场景(如批量操作的统计、日志记录等)。

目录
相关文章
|
10月前
|
前端开发 API UED
突破异步困境:掌握Promise.allSettled()的实用技巧
突破异步困境:掌握Promise.allSettled()的实用技巧
441 112
|
Web App开发 数据可视化 前端开发
前端数据可视化插件(四)关系图
前端数据可视化插件(四)关系图
前端数据可视化插件(四)关系图
|
前端开发 JavaScript
除了使用Polyfill,还有其他解决Promise.allSettled()兼容性问题的方法吗?
除了使用Polyfill,还有其他解决Promise.allSettled()兼容性问题的方法吗?
664 179
|
12月前
|
前端开发
如何在 Promise.all() 中处理异步操作?
如何在 Promise.all() 中处理异步操作?
448 8
|
12月前
|
JavaScript Linux 开发工具
编写第一个MCP Server之Hello world
本文介绍如何使用Node.js编写一个简单的MCP Server——“Echo”服务。通过环境搭建、项目初始化、代码实现及验证,完成MCP服务的开发与调用测试,助力快速入门MCP协议开发。
1047 2
|
监控 JavaScript 前端开发
🎉 Harmony OS Next里的Web组件:网页加载的全流程掌控手册
本文详细解析了Harmony OS Next中ArkUI Web组件的九大生命周期回调,帮助开发者全面掌控网页加载流程。从组件初始化到加载完成,再到异常处理与性能优化,每个阶段都配有具体代码示例和注意事项。内容涵盖关键回调(如aboutToAppear、onPageBegin)的使用场景、网页加载进度监控(FCP/FMP/LCP)、以及前端页面优化实践。通过本文,开发者可以高效管理网页加载过程,提升应用性能与用户体验。
|
前端开发 容器
彻底理解粘性定位 - position: sticky
彻底理解粘性定位 - position: sticky
1499 154
|
存储 JavaScript 前端开发
js中的遍历方法比较:map、for...in、for...of、reduce和forEach的特点与适用场景
js中的遍历方法比较:map、for...in、for...of、reduce和forEach的特点与适用场景
1013 0
|
机器学习/深度学习 编解码 人工智能
EasyAnimate-v3版本支持I2V及超长视频生成
阿里云人工智能平台(PAI)自研开源的视频生成项目EasyAnimate正式发布v3版本