关于Promise处理多个请求之后统一处理的问题

236 阅读1分钟

场景描述

let arr =[params1, params2,params3,...]
需要使用arr数组里的每一项调接口,等所有的请求结束,统一处理

方法一

使用Promise.all,这种方式可以实现等待所有接口请求完成之后统一处理,但是这个方法会按照并行的模式,将所有请求一次性全部发送出去,然后等待接收到全部结果后,在走统一处理

const P = arr.map(item=>{
   return getService(item) 
}
Promise.all(P).then((res)=>{
    console.log('成功之后的统一处理')
})

方法二

使用for of + async + await,这种方式会等到前一个请求完毕,才会发起下一个,然后按照顺序依次执行,请求全部结束以后,走统一处理。

for (let item of arr) {
    await getService(item) 
}
console.log('成功之后的统一处理')

参考

# async-await的循环请求数据