forEach使用await无效及解决方法

403 阅读1分钟

是因为foreach循环是同步执行的,而await关键字只能在异步方法中使用,在JavaScript中,forEach是一个数组的方法,它不支持异步处理。

如果你需要在数组的每个元素上执行异步操作,并等待每个操作完成,可以考虑使用for...of循环结合await关键字,或者使用map方法结合Promise.all方法来处理异步操作。

  1. 使用for...of循环和await关键字:
async function forArray(array) {
  for (const item of array) {
    await doSomethingAsync(item);
  }
}


// 调用示例
const myArr = [1, 2, 3, 4, 5];
forArray(myArr);
输出结果:
1
2
3
4
5
  1. 使用map方法和Promise.all
async function forArray(array) {
  await Promise.all(array.map(item => doSomethingAsync(item)));
}

// 调用示例
const myArr = [1, 2, 3, 4, 5];
forArray(myArr);