Promise.allSettled()方法的语法是什么?
简介:
Promise.allSettled()方法的语法是什么?
- 基本语法格式
Promise.allSettled(iterable)
是Promise.allSettled()
方法的基本语法。其中,iterable
是一个可迭代对象,通常是一个包含Promise
对象的数组,不过也可以是其他符合可迭代协议的对象,如Set
等。
- 例如:
const promises = [
new Promise((resolve) => setTimeout(() => resolve('成功1'), 1000)),
new Promise((resolve, reject) => setTimeout(() => reject('失败2'), 1500)),
new Promise((resolve) => setTimeout(() => resolve('成功3'), 2000))
];
Promise.allSettled(promises)
.then((results) => {
console.log(results);
});
- 返回值
- 它返回一个新的
Promise
。这个Promise
会在所有传入iterable
中的Promise
对象都已完成(fulfilled
或者rejected
)后被resolved
。
- 返回的结果是一个数组,数组中的每个元素是一个对象,这个对象有两个属性:
status
:其值为"fulfilled"
或者"rejected"
,用于表示对应的Promise
是成功还是失败。
- 当
status
为"fulfilled"
时,对象有value
属性,其值为对应的Promise
成功返回的值;当status
为"rejected"
时,对象有reason
属性,其值为对应的Promise
被拒绝的原因。例如:[
{
status: "fulfilled", value: "成功1"},
{
status: "rejected", reason: "失败2"},
{
status: "fulfilled", value: "成功3"}
]
- 错误处理
- 与
Promise.all()
不同,Promise.allSettled()
不会因为其中一个Promise
被rejected
就立即返回一个rejected
的Promise
。它会等待所有的Promise
完成后,将所有结果(包括成功和失败)都放在返回的数组中。
- 如果在执行
Promise.allSettled()
过程中出现了同步错误(例如,传递给Promise.allSettled()
的参数不是可迭代对象),那么它会抛出一个同步错误,就像其他JavaScript函数一样。但如果是内部的Promise
对象在异步执行过程中出现错误,这些错误会被捕获并作为rejected
的结果包含在最终返回的数组中。