js forEach中有异步怎么控制异步执行完再执行下一次循环
时间: 2024-04-02 21:09:19 浏览: 13
可以使用async/await来控制异步执行完再执行下一次循环。
例如,如果forEach的回调函数中有异步操作,可以将回调函数改为async函数,并在异步操作处使用await关键字。然后使用for...of循环来替代forEach循环,使用await关键字等待异步操作完成后再执行下一次循环。
示例代码:
```javascript
const arr = [1, 2, 3];
async function asyncFunc(num) {
return new Promise(resolve => {
setTimeout(() => {
console.log(`asyncFunc ${num}`);
resolve();
}, 1000);
});
}
async function main() {
for (const num of arr) {
await asyncFunc(num);
console.log(`loop ${num}`);
}
}
main();
```
输出结果:
```
asyncFunc 1
loop 1
asyncFunc 2
loop 2
asyncFunc 3
loop 3
```
在上面的示例代码中,asyncFunc函数模拟了一个异步操作,使用了Promise和setTimeout来实现。在main函数中,使用for...of循环遍历数组,并在每次循环中使用await关键字等待异步操作完成后再执行下一次循环。因此,输出结果中可以看到异步操作和循环的顺序是交替进行的。