const p = Promise.all([p1, p2, p3])
// p1, p2, p3 為傳入 promise 的實(shí)例
Promise.all(ES2015):只有當(dāng)傳入的每個 Promise 實(shí)例的狀態(tài)都變成 fulfilled 時(shí),p 才 fulfilled,只要實(shí)例中有任意一個的狀態(tài)是 rejected 的狀態(tài)就變成了 rejected;
Promise.race(ES2015):當(dāng)傳入的 Promise 實(shí)例中有一個的狀態(tài)最先改變(注意是第一個改變狀態(tài)的實(shí)例)猖辫,那么 p 的狀態(tài)就是該實(shí)例的狀態(tài)踢关,然后進(jìn)行返回勺馆;
Promise.allSettled(ES2020):只有等到所有傳入的 Promise 實(shí)例都返回結(jié)果咐鹤,不管是 fulfilled 還是 rejected拗秘,實(shí)例才會結(jié)束,然后返回對應(yīng)的每個實(shí)例的狀態(tài)慷暂;
Promise.any(ES2021):當(dāng)其中任何一個 Promise 實(shí)例 fulfilled 時(shí)聘殖,就返回該已完成的實(shí)例的 Promise。如果所有的實(shí)例都 rejected行瑞,那么就返回一個拒絕的 Promise 實(shí)例奸腺。
const pAny = Promise.all([p1, p2, p3])
Promise.any(pAny).then(
resolve => {
// 任何一個Promise完成
},
reject => {
// 所有的 Promise都拒絕了
}
)