【JavaScript】forEach中无法使用await/async

forEach循环会产生多个同步调用,就算你在forEach中使用了await,forEach也不会等待调用结束,forEach之后的语句会立即执行。

因此,如果你要在循环中使用 await,还是得使用for … of 结构,例如:

async function printFiles () {
  const files = await getFilePaths();

  for (const file of files) {
    const contents = await fs.readFile(file, 'utf8');
    console.log(contents);
  }
}

如果你想在循环中多路执行await,应当使用Promise.all,例如:

async function printFiles () {
  const files = await getFilePaths();

  await Promise.all(files.map(async (file) => {
    const contents = await fs.readFile(file, 'utf8')
    console.log(contents)
  }));
}

来源: https://stackoverflow.com/a/37576787/3054511

你可能感兴趣的:(nodejs,Javascript,javascript,前端,开发语言)