java for循环 等待_在forEach循环中使用异步/等待

  • Post author:
  • Post category:java


在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



版权声明:本文为weixin_39999222原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。