Bootstrap

for循环中批量调用接口,等接口全部执行完成后处理——js基础积累

最近在写后台管理系统的时候,遇到一个需求,就是要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等
在这里插入图片描述

;