Promise.allSettled()
**Promise.allSettled()
** 静态方法接受可迭代的 promises 作为输入,并返回单个 Promise
。此返回的 promise 在所有输入的 promises 解决时(包括传递空可迭代时)满足,并带有一个描述每个 promise 结果的对象数组。
试一试
语法
js
Promise.allSettled(iterable)
参数
返回值
一个 Promise
,它是
- **已满足的**,如果传递的
iterable
为空。 - **异步满足的**,当给定
iterable
中的所有 promises 都已解决(已满足或已拒绝)时。满足值是一个对象数组,每个对象都描述iterable
中一个 promise 的结果,按照传递 promises 的顺序排列,与完成顺序无关。每个结果对象都具有以下属性status
-
一个字符串,可以是
"fulfilled"
或"rejected"
,表示 promise 的最终状态。 value
-
仅在
status
为"fulfilled"
时出现。promise 满足时的值。 reason
-
仅在
status
为"rejected"
时出现。promise 被拒绝的原因。
iterable
非空,但没有包含任何挂起的 promises,则返回的 promise 仍然是异步(而不是同步)满足的。
描述
Promise.allSettled()
方法是 promise 并发 方法之一。Promise.allSettled()
通常用于您有多个异步任务需要完成,它们彼此之间不依赖,或者您始终想要知道每个 promise 的结果。
相比之下,Promise.all()
返回的 Promise 可能更适合任务相互依赖,或者您希望在其中任何一个拒绝时立即拒绝。
示例
使用 Promise.allSettled()
js
Promise.allSettled([
Promise.resolve(33),
new Promise((resolve) => setTimeout(() => resolve(66), 0)),
99,
Promise.reject(new Error("an error")),
]).then((values) => console.log(values));
// [
// { status: 'fulfilled', value: 33 },
// { status: 'fulfilled', value: 66 },
// { status: 'fulfilled', value: 99 },
// { status: 'rejected', reason: Error: an error }
// ]
规范
规范 |
---|
ECMAScript 语言规范 # sec-promise.allsettled |
浏览器兼容性
BCD 表格仅在浏览器中加载