Promise.allSettled()
是 JavaScript 中的一个 Promise 方法,它接收一个由多个 Promise 对象组成的可迭代对象,并在所有 Promise 对象都已解决或拒绝后返回一个 Promise 对象,该对象解析为一个数组,每个元素对应于相应的 Promise 对象的结果。
与 Promise.all()
不同的是,Promise.allSettled()
不会在任何 Promise 被拒绝时中止,并且总是等待所有 Promise 对象都已解决或拒绝后才返回结果。返回的数组中的每个元素都是一个对象,包含以下属性之一:
status
:表示 Promise 的状态,可能的值为 “fulfilled”(已解决)或 “rejected”(已拒绝)。value
:如果 Promise 已解决,则为解决值;如果 Promise 已拒绝,则为拒绝原因。
以下是一个简单的示例:
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'error'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 200, 'resolved'));
Promise.allSettled([promise1, promise2, promise3])
.then((results) => {
results.forEach((result) => {
console.log(result.status); // 输出 "fulfilled", "rejected", "fulfilled"
console.log(result.value); // 输出 3, "error", "resolved"
});
});
在这个示例中,Promise.allSettled()
等待所有 Promise 对象都已解决或拒绝后返回结果,并返回一个包含每个 Promise 结果的数组。