返回

Promise.all和promise.allSettled的用法,Promise.all的错误捕获方法

前端

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对象作为参数。