在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是空的,我该怎么写才能实现这个功能呢?
如果是想要串行地读取文件列表的内容,可以使用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('');
}
内容