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