最近在写后台管理系统的时候,遇到一个需求,就是要for循环遍历,然后每一项都要进行接口的调用,然后接口全部执行完成后再进行其他的操作。
下面有两种方式来处理:
1.可以通过Promise.all的方式来处理——接口异步同时进行
let tableData = [];
let proArr = [];
this.arr.forEach(item=>{
proArr.push(接口(入参).then(res=>{tableData = tableData.concat(res.data.items)}))
})
Promise.all(proArr).then(()=>{此时tableData的数据就是最终的了})
2.可以通过for循环+async+await的形式来处理——接口同步进行,一个执行完了再执行下一个,这个对后端接口而言更友好
async getDataList(){
for(let item of this.arr){
await 接口(入参).then(res=>{tableData = tableData.concat(res.data.items)}
}
此时tableData的数据就是最终的了
}
注意:不能使用forEach,只能用for循环,或者map等