關於 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 全介紹
沒有留言:
張貼留言