ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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

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

先上核心代码

let newArr=[]
const listRes = arr.map( async(itm,idx)=>{let {id,num,......}=itemlet 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来更新对应数据

 
返回列表