在forEach中怎么使用async/await?

在forEach中怎么使用async/await?比如我想通过forEach读取文件列表中的内容。

import fs from 'fs-promise';

async function readFileContent() {
  let content = '';
  const files = ['./test1.txt', './test2.txt'];
  files.forEach(async (file) => {
    content += await fs.readFile(file, 'utf8');
  });
  return content;
}

这样运行没有出错,但是content是空的,我该怎么写才能实现这个功能呢?

javascriptasyncawaitforEach
1
248
已修改
小课
小课2022-05-30 22:11
1 个回答

如果是想要串行地读取文件列表的内容,可以使用for..of或者for..in循环实现。

async function readFileContent() {
  let content = '';
  const files = ['./test1.txt', './test2.txt'];
  for (let file of files) {
    content += await fs.readFile(file, 'utf8');
  }
  return content;
}

如果是想要并行地读取文件列表的内容,可以Promise.all(...)map方法来实现。

async function readFileContent() {
  const files = ['./test1.txt', './test2.txt'];
  const res = await Promise.all(
    files.map(async (file) => {
      return await fs.readFile(file, 'utf8');
    })
  );
  return res.join('');
}
1
小课
小课2022-05-30 22:33
你的回答

内容