Promise 由於是 Asynchronous 產生速度有快有慢,可使用 Promise.all() 等所有 Promise 都 Fulfilled 後包成單一 Promise。
Version
ECMAScript 2015
Fulfilled Promise
let data = [
Promise.resolve(1),
Promise.resolve(2),
Promise.resolve(3)
]
Promise.all(data) // ?
data 為 Array 內有 3 個 Promise,Promise.all() 會等 3 個 Promise 都 fulfilled 後才合併成單一 Promise 回傳。

Rejected Promise
let data = [
Promise.resolve(1),
Promise.reject(2),
Promise.resolve(3)
]
Promise.all(data) // ?
date[1] 為 Rejected Promise,Promise.all() 中只要有一個為 Rejected Promise,則最後結果為該 Rejected Promise。

Conclusion
- 實務上若要在 synchronous higher order function 內 (如
map()) 呼叫 asynchronous function,就會出現 Array 中一堆 Pending Promise,此使可使用Promise.all()使之全部 fulfilled
Reference
Marius Schulz, Wait for Multiple JavaScript Promises to Settle with Promise.all()
MDN, Promise.all()