promise.allsettled 返回一个 promise,该 promise 兑现为对象数组,每个对象含 status("fulfilled" 或 "rejected")及对应 value 或 reason 字段。

Promise.allSettled 用于并行执行多个 Promise,并**等待所有 Promise 结束(无论成功或失败)**,然后返回一个包含每个 Promise 最终状态和结果的数组。它不会因为某个 Promise 拒绝而中断,适合需要“全量收集结果”的场景。
allSettled 返回什么结构?
它返回一个 Promise,该 Promise 兑现(fulfilled)为一个对象数组,每个对象都有两个固定字段:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
status:字符串,值为
"fulfilled"或"rejected" -
value 或 reason:如果 status 是
"fulfilled",则有value字段(即 resolve 的值);如果是"rejected",则有reason字段(即 reject 的错误)
基本用法示例
假设有三个异步操作(比如 API 请求),其中第二个会失败:
const p1 = Promise.resolve(1);
const p2 = Promise.reject(new Error('请求失败'));
const p3 = Promise.resolve('done');
Promise.allSettled([p1, p2, p3])
.then(results => {
console.log(results);
// 输出:
// [
// { status: 'fulfilled', value: 1 },
// { status: 'rejected', reason: Error: 请求失败 },
// { status: 'fulfilled', value: 'done' }
// ]
});
如何提取成功/失败的结果?
你可以遍历返回的数组,按 status 分类处理:
- 过滤出成功的:
results.filter(r => r.status === 'fulfilled').map(r => r.value) - 过滤出失败的:
results.filter(r => r.status === 'rejected').map(r => r.reason) - 统一处理:用
for...of或forEach判断每个项的状态再操作
常见适用场景
- 批量提交表单或上传文件,需要知道每一个是否成功,而不是“全成功才继续”
- 并发调用多个微服务接口,汇总所有响应(包括错误详情)做日志或降级处理
- 初始化多个模块/配置项,允许部分失败但不影响整体启动流程
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










