2022年8月8日 星期一

並列執行 Promise

 並列執行 Promise

前言

  在先前的 初探 Promise 提過 Promise 的基本應用, Promise 總是一個使用完在到下一個,如果要同時使用 Promise 該如何做?在此把學習的過程做個紀錄。


內容

  範例如下

function promise(num, time = 50) {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      (num>0) ? resolve(`value:${num}, 成功`) : reject(`value:${num},失敗`);
    }, time);
  });
}
Promise.all([promise(1), promise(2), promise(3, 300)])
  .then(res => {
    console.log(res);
  })
  .catch(res =>{
    console.log(res);
  
  });
//["value:1, 成功", "value:2, 成功", "value:3, 成功"]


要並列執行必須透過 Promise.all() ,只要將引數裡傳入裝有每個都是 Promise 的陣列就可以並列執行,接著就和一般的 Promise 一樣使用 then() 與 catch() 來接收,但回傳的引數有不同的意義,then() 的引數會是包含著每個 Promise 成功拾回傳值得陣列, catch() 這邊只能回傳第一個發生失敗的 Promise 回傳值,這點要注意。


參考資料

[ 卡斯伯的 Blog ] JavaScript Promise 全介紹


相關文章與資料

初探 Promise

沒有留言:

張貼留言