JavaScript 中 Promise.all() 方法和 Promise.allSettled() 方法有何区别?


本文将介绍 JavaScript 中 Promise.all() 方法和 Promise.allSettled() 方法的区别。

Promise.all() 方法接受一个或多个 Promise 作为输入,并返回一个单一的 Promise。当所有输入的 Promise 都 fulfilled 时,返回的 Promise 才 fulfilled。如果任何一个输入的 Promise 被 rejected,则返回的 Promise 会被 rejected,并返回第一个 rejection reason。

Promise.allSettled() 方法接受一个或多个 Promise 作为输入,并返回一个单一的 Promise。当所有输入的 Promise 都 settled(包括传入空迭代器的情况)时,返回的 Promise 才 fulfilled,并返回一个对象数组,描述每个 Promise 的结果。

示例 1

在这个例子中,让我们看看 Promise.all 方法是如何工作的。

console.log("Defining three promise values: promise1, promise2 and promise3");
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve, reject) => {
   setTimeout(resolve, 2 , 'Promise Two');
});
const promise3 = 3;

console.log("Running Promise.all method on all the three promise values")

Promise.all([promise1, promise2, promise3]).then((values) => console.log(values));

解释

  • 步骤 1 - 定义三个 Promise 值,分别命名为 promise1、promise2、promise3,并为它们添加值。

  • 步骤 2 - 对所有 Promise 值运行 Promise.all() 方法。

  • 步骤 3 - 显示 Promise 值作为结果。

示例 2

在这个例子中,让我们看看 Promise.allSettled 方法是如何工作的。

console.log("Defining three promise values: promise1, promise2 and promise3");
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve, reject) => {
   setTimeout(resolve, 2 , 'Promise Two');
});
const promise3 = 3;

console.log("Running Promise.allSettled method on all the three promise values")

Promise.allSettled([promise1, promise2, promise3]).then((values) => console.log(values));

解释

  • 步骤 1 - 定义三个 Promise 值,分别命名为 promise1、promise2、promise3,并为它们添加值。

  • 步骤 2 - 对所有 Promise 值运行 Promise.allSettled() 方法。

  • 步骤 3 - 显示 Promise 值作为结果。

更新于:2023年2月16日

119 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告