promise.all同时请求多个接口

这个场景在开发中非常的常见,需要批量的请求后台数据 就要如此
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()
);
例子:

promise.all同时请求多个接口_第1张图片

你可能感兴趣的:(前端,javascript)