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 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.