2022年8月15日 星期一

關於 Promise 的 race()

 關於 Promise 的 race()

前言

  在上次的 並列執行 Promise 中使用 Promise.all() 來並列執行 Promise ,查了一下有個很像的 function ,就是 Promise.race() ,就來做個學習,在此做個紀錄。


內容

  範例如下

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


Promise.race() 跟 Promise.all()  的用法很像,都是傳入多個 Promise ,但不一樣的地方是 Promise.race() 會在第一個發生 resolve() 或 reject() 的 Promise 發生後就進到 then() 或 catch() ,範例會回傳第二個結果是因為第二個最快完成,但其它的 Promise 還是會各自完成,只是不會進到 then() 或 catch() 了。


參考資料

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


相關文章與資料

並列執行 Promise


沒有留言:

張貼留言