Promise.allSettled() 是一个Promise方法,用于处理一个Promise数组,返回一个新的Promise数组,每个元素对应原始Promise的状态。这个方法可以用于处理多个异步操作,并且能够获取每个操作的结果和状态。
下面是Promise.allSettled()的详细代码示例:
const promise1 = Promise.resolve(3);
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(4);
}, 1000);
});
const promise3 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Error!'));
}, 2000);
});
Promise.allSettled([promise1, promise2, promise3]).then(results => {
console.log(results);
results.forEach(result => {
console.log(result.status); // "fulfilled" 或 "rejected"
if (result.status === 'fulfilled') {
console.log(result.value); // 成功的结果值
} else {
console.log(result.reason); // 错误原因
}
});
});
输出结果:
在上面的代码中,我们创建了三个Promise对象:promise1、promise2和promise3。promise1已经解析,promise2将在1秒后解析,promise3将在2秒后被拒绝。
然后,我们使用Promise.allSettled()方法处理这三个Promise对象,返回一个新的Promise对象。这个新的Promise对象在所有原始Promise都完成后才解析,并将每个原始Promise的状态和结果存储在一个数组中。
最后,我们使用.then()方法处理新的Promise对象,并打印出每个原始Promise的状态和结果。如果Promise已实现(fulfilled),则打印出状态"fulfilled"和结果值;如果Promise被拒绝(rejected),则打印出状态"rejected"和错误原因。