循环调用接口,使用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来更新对应数据

浙公网安备 33010602011771号