Promise.all
Promise.all 是將多個(gè)Promise的實(shí)例組成一個(gè)新的Promise實(shí)例。
當(dāng)有成功值時(shí)披诗,返回的是成功的數(shù)組。
當(dāng)有失敗值時(shí),返回的是最先被reject捕捉到失敗狀態(tài)的值整袁。
上樣例:
let demo_1 = new Promise((resolve, reject) => {
resolve("success---1")
})
let demo_2 = new Promise((resolve, reject) => {
resolve("success---2")
})
let demo_3 = new Promise.reject("fail---1")
Promise.all([demo_1, demo_2]).then((result) => {
console.log(result) // ['success---1', 'success---2']
}).catch((error) => {
console.log(error)
})
Promise.all([demo_1, demo_2, demo_3]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error) // error "fail---1"
})
實(shí)際用途:
1.Promise.all主要用于處理多個(gè)異步,比如佑吝,一個(gè)頁(yè)面上需要等待多個(gè)接口數(shù)據(jù)回來以后才執(zhí)行下邊的方法坐昙,在此之前就可以用loading的樣式。
2.由于 Promise.all 獲得成功數(shù)據(jù)中數(shù)組順序和接收數(shù)據(jù)的幾個(gè) Promise 順序一致(上例中芋忿,demo_1 和 demo_2)炸客。這樣的話:在前端開發(fā)請(qǐng)求數(shù)據(jù)的過程中,如果遇到發(fā)送多個(gè)請(qǐng)求并根據(jù)請(qǐng)求順序獲取和使用數(shù)據(jù)的場(chǎng)景戈钢,使用 Promise.all 是一個(gè)很不錯(cuò)的選擇痹仙。
Promise.race
Promise.race([demo_1, demo_2, demo_3]) 中哪個(gè)結(jié)果返回的速度快,就返回哪個(gè)殉了,不管結(jié)果本身是成功狀態(tài)還是失敗狀態(tài)开仰。
這個(gè)場(chǎng)景使用比較少,根據(jù)實(shí)際情況使用。