溫馨提示×

ES6中promise.all的用法是什么

es6
小億
143
2023-12-21 16:46:07
欄目: 編程語言

ES6中的Promise.all是一個靜態方法,用于處理多個Promise對象的并行執行。它接受一個Promise對象的數組作為參數,并返回一個新的Promise對象。

Promise.all會等待所有的Promise對象都變為resolved狀態后才會返回,返回的Promise對象的resolve回調函數的參數是一個數組,包含了所有Promise對象的結果。如果其中任何一個Promise對象變為rejected狀態,則返回的Promise對象的reject回調函數會被立即調用,并傳遞第一個被rejectedPromise對象的錯誤信息。

示例代碼如下:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values); // [3, 42, 'foo']
  })
  .catch(error => {
    console.error(error);
  });

在上面的例子中,promise1promise2分別是已經被resolvedPromise對象,而promise3是一個在100ms后變為resolved狀態的Promise對象。Promise.all會等待所有的Promise對象都變為resolved狀態后,返回一個新的Promise對象,并將所有結果以數組的形式傳遞給resolve回調函數。在這個例子中,values數組包含了promise1、promise2promise3的結果,即[3, 42, 'foo']。

如果其中任何一個Promise對象變為rejected狀態,如下所示:

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, 'Error');
});

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values);
  })
  .catch(error => {
    console.error(error); // Error
  });

在這個例子中,promise3在100ms后變為rejected狀態,Promise.all會立即返回一個新的Promise對象,并將promise3的錯誤信息傳遞給reject回調函數。因此,只會執行catch回調函數,并輸出Error。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女