在forEach循环中使用async / await是否有任何问题? 我正在尝试遍历文件数组并await每个文件的内容。
import fs from ‘fs-promise’
async function printFiles () {
const files = await getFilePaths() // Assume this works fine
files.forEach(async (file) => {
const contents = await fs.readFile(file, ‘utf8’)
console.log(contents)
})
}
printFiles()
这段代码确实有效,但是这可能会出问题吗? 我让某人告诉我,您不应该在这样的高阶函数中使用async / await ,所以我只想问一下这是否有问题。
#1楼
确保代码确实有效,但是我很确定它不会实现您期望的功能。 它只是触发多个异步调用,但是在printFiles之后printFiles函数确实会立即返回。
如果forEach顺序读取文件, 则实际上不能使用forEach 。 只需使用现代的for … of循环,在其中await将按预期工作:
async function printFiles () {
const files = await getFilePaths();
for (const file of files) {
const contents = await fs.readFile(file, ‘utf8