这个场景在开发中非常的常见,需要批量的请求后台数据 就要如此
let p1 =new Promise((resolve,reject)=>{
getData1().then((res)=>{
resolve(res)
}).catch(e=>{
reject('发生错误')
})
})
let p2 = new Promise((resolve,reject)=>{
getData2().then((res)=>{
resolve(res)
}).catch(e=>{
// 标记失败后给定某个数据
reject('发生错误')
})
})
let p3 = new Promise((resolve,reject)=>{
getData3().then((res)=>{
resolve(res)
}).catch(e=>{
reject('发生错误')
})
})
// results的结果是一个数组,分别代表三个接口的数据
Promise.all([p1, p2, p3]).then((results)=>{
console.log('success:',results)
}).catch(e=>{ // 失败的时候则返回最先被reject失败状态的值
console.log("error",e)
})
//也可以这样写
let res = await Promise.allSettled([p1, p2, p3])
// 返回结果是一个数组
cosnole.log(res)
Promise.all是并发的,也就是执行的顺序是无序的, 要有序的话,需要这样做
// 多个promise
const promises = [.....]
Promise.all(promises).then(res => {
console.log(res)
// [.....] 结果
})
promises.reduce(
(prev, next) => prev.then(() => next.action()),
Promise.resolve()
);
例子:
