返回
Promise.all和promise.allSettled的用法,Promise.all的错误捕获方法
前端
2024-01-21 22:45:22
Promise.all用法
Promise.all方法接收一个Promise对象数组作为参数,并返回一个新的Promise对象。这个新的Promise对象的状态取决于传入的Promise对象数组的状态。如果所有传入的Promise对象都成功完成,则新的Promise对象也会成功完成,并传递一个数组作为参数,该数组包含所有传入的Promise对象成功完成后的结果。如果传入的Promise对象数组中有一个或多个失败,则新的Promise对象也会失败,并传递一个Error对象作为参数。
const promise1 = Promise.resolve(1);
const promise2 = Promise.resolve(2);
const promise3 = Promise.resolve(3);
Promise.all([promise1, promise2, promise3]).then((result) => {
console.log(result); // 输出:[1, 2, 3]
}).catch((error) => {
console.log(error); // 不会执行
});
Promise.allSettled用法
Promise.allSettled方法接收一个Promise对象数组作为参数,并返回一个新的Promise对象。这个新的Promise对象的状态始终为成功,并传递一个数组作为参数,该数组包含所有传入的Promise对象的状态和结果。
const promise1 = Promise.resolve(1);
const promise2 = Promise.reject(2);
const promise3 = Promise.resolve(3);
Promise.allSettled([promise1, promise2, promise3]).then((result) => {
console.log(result); // 输出:[
{ status: "fulfilled", value: 1 },
{ status: "rejected", reason: 2 },
{ status: "fulfilled", value: 3 }
]
}).catch((error) => {
console.log(error); // 不会执行
});
Promise.all的错误捕获方法
Promise.all方法有一个重要的错误捕获方法,当传入的任何一个Promise失败时,都会立即执行回调函数,并传递一个Error对象作为参数。这可以帮助我们更轻松地处理Promise对象数组中出现的错误。
const promise1 = Promise.resolve(1);
const promise2 = Promise.reject(2);
const promise3 = Promise.resolve(3);
Promise.all([promise1, promise2, promise3]).catch((error) => {
console.log(error); // 输出:2
});
总结
Promise.all和promise.allSettled是Promise对象提供的两个非常有用的方法,它们可以帮助我们更轻松地处理多个异步操作。Promise.all可以等待所有传入的Promise都完成后再执行回调函数,而promise.allSettled则可以等待所有传入的Promise都完成后再执行回调函数,无论它们是成功还是失败。此外,Promise.all还有一个重要的错误捕获方法,当传入的任何一个Promise失败时,都会立即执行回调函数,并传递一个Error对象作为参数。