在有多個 Promise 的時候,使用 Promise.all 可以確保「所有的 Promise 都執行完以後,才進入 then」。
當程式需要處理多個 Promise 要執行時,而這些 Promise 之間沒有明確的先後順序,但一定需要「全都執行完」,才能進入後續流程,此時,你就可以考慮使用 Promise.all。
const oneSecond = new Promise((resolve, reject) => {
setTimeout (() => {
//一秒後回傳資料
resolve('one second')
}, 1000)
})
const towSecond = new Promise ((resolve, reject) => {
//兩秒回傳資料
resolve('tow Second')
}, 2000)
const threeSecond = new Promise ((resolve, reject) => {
//三秒回傳資料
resolve('three Second')
}, 2000)
//等到三個Promise都成功回傳後,才執行接下去的流程
Promise.all([oneSecond, towSecond, threeSecond ])
.then(([oneSecond, towSecond, threeSecond ]) => {
console.log(oneSecond, towSecond, threeSecond)
})//輸出結果"one second","tow Second","three Second"