promise.allsettled适合处理多个独立任务,所有任务均执行到底并返回包含status、value或reason的对象数组;空数组立即返回空数组,非promise值被自动包装为fulfilled状态。

Promise.allSettled 适合处理多个互不依赖、各自独立的任务,它不会因某个任务失败而中断,而是等所有任务都结束(无论成功或失败),再统一返回结果数组。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
它和 Promise.all 的关键区别
• Promise.all:只要有一个 rejected,就立即 reject,其余还在执行的任务也会被“放弃”(实际仍在运行,但结果被忽略)
• Promise.allSettled:所有 Promise 都会执行到底,返回每个任务的完整状态(fulfilled 或 rejected),不短路、不抛错
返回值结构要清楚
它返回一个 Promise,兑现后是一个对象数组,每个对象含两个固定字段:
• status:字符串,值为 "fulfilled" 或 "rejected"
• value(仅 status === "fulfilled" 时存在):对应 Promise 的返回值
• reason(仅 status === "rejected" 时存在):对应 Promise 的错误原因
典型使用方式:遍历结果做分类处理
```js
const tasks = [
fetch('/api/user'),
fetch('/api/posts'),
fetch('/api/settings')
];
Promise.allSettled(tasks)
.then(results => {
const successes = results
.filter(r => r.status === 'fulfilled')
.map(r => r.value);
const failures = results
.filter(r => r.status === 'rejected')
.map(r => r.reason);
console.log('成功响应:', successes);
console.log('失败原因:', failures);
});
```
注意边界情况
• 如果传入空数组,Promise.allSettled([]) 会立即 resolve 一个空数组
• 如果传入非 Promise 值(如字符串、数字),会被自动包装成已兑现的 Promise,对应结果是 { status: 'fulfilled', value: ... }
• 它本身不会 throw 错误,所以通常不需要外层 try/catch —— 错误已封装在 result.reason 中
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










