promise.all同时请求多个接口

本文介绍了在开发中批量请求后台数据的常见场景,通过Promise.all和Promise.allSettled的使用,实现接口请求的并发处理。当所有请求成功时,Promise.all返回一个包含所有结果的数组;若有请求失败,它将返回最先失败的状态值。此外,还展示了如何通过reduce方法确保请求顺序执行。对于需要有序执行的情况,可以利用这种方式来控制流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值