並列執行 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 全介紹
沒有留言:
張貼留言