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)
}));
}