Promise.all和Promise.race

2019-12-03  本文已影响0人  编号哈哈哈

Promise.all

let p1 = new Promise((resolve,reject) => {
    resolve('成功')
})
let p2 = new Promise((resolve,reject) => {
    resolve('success')
})
let p3 = Promise.reject('失败')
Promise.all([p1,p2]).then((result) => {
    console.log(result) // ['成功','seccess']
}).catch((error) => {
    console.log(error)
})
Promise.all([p1,p3]).then((result) => {
    console.log(result) 
}).catch((error) => {
    console.log(error)//['失败']
})

⚠️注意:成功时接收到的数组的顺序是all参数里的数组的顺序,即p1的结果在前,即便p1的结果比p2的结果晚获取到。这带来了一个好处、在前端的数据使用中,偶尔会遇到发送多个请求并根据请求的顺序获取和使用数据的场景,使用Promise.all可以解决这个问题。

Promise.race

let p1 = new Promise((resolve,reject) => {
 setTimeout(() => {
 resolve('成功了')
 },2000);
})
let p2 = new Promise((resolve,reject) => {
    setTimeout(() => {
        reject('failed')
    },500)
})

Promise.race([p1,p2]).then((result) => {
    console.log(result)
}).catch((error) => {
    console.log(error);//failed
})
上一篇 下一篇

猜你喜欢

热点阅读