循环调用接口,使用promise.all的应用

需求:有一个数组arr不确定长度,1.根据数组中的每个唯一(id)请求接口获取到对应数据更新数组的arr的值,2.也可以调用一个指定的arr的下标中的id更新对应的这一条数据

先上核心代码

let newArr=[]
const listRes = arr.map( async(itm,idx)=>{

   let {id,num,......}=item
   let obj={
        id,
        num,
        ...
    }  
    newArr.push(obj)
   await oneRequest(obj,newArr.length-1)//调用接口更新num
})
 
await Promise.all(listRes)

注意 最后的await外边应该包一个aysnc

解析:在map循环的时候,使用aysnc/await来处理异步接口请求,

oneRequest来更新对应数据,最后使用promise.all来等待所有请求完成从而更新数据
async oneRequest(itm,idx){
  const params ={id:itm.id,num:itm.num,...}
  //请求接口
  const res = await realRes(params);
  if(res?.num){
      this.$set(newArr[idx],'num',res.num)  
   }else{
        //健全下接口没返回
        this.$set(newArr[idx],'num',0)  
    }            
}        

这个请求接口统一封装如果只改其中一条数据那就可以通用,当然也可以更全加上try/catch更好

以上就是使用了async/await和promise.all来更新对应数据

 
posted @ 2025-10-15 09:13  给第一张敬个礼  阅读(8)  评论(0)    收藏  举报