如何处理循环异步问题

场景

后台管理项目一般都需要很多数据处理,遇到一个场景:管理员可以上传0–+∞图片类型+图片的场景,将数据存起来后不知道会上传多少组数据,调多少次上传图片的接口(因为这个接口会返回各个文件的id,之后在组合id调上传信息的接口),就想到将最后的数组循环调用然后等返回值,就设计到forEach不能和await共用的问题。

期初以为是async和await无法真正做到这种异步问题,就用Promise包了一层又一层,结果还是有问题。

自己当时的解法

最后想了一个解法,在保存数据的数组外定义一个变量,每次循环变量+1,循环内判断当此变量等于数组的长度时,将所有数据组装调上传信息的接口。

原因

forEach只支持同步代码,只是简单的执行一下回调函数,不会处理异步代码。

其他解法

for…of (迭代器的一种实现,通过迭代器的方式遍历

1
2
3
4
5
6
7
async function test() {
let arr = [1, 2, 3];
for(const val of arr){
const res = await 请求(val)
console.log(res);
}
}

-------------本文结束感谢您的阅读-------------
坚持原创,感谢支持!