我在这里有这个 nodejs 代码,它读取一个文件夹并处理文件。该代码有效。但它仍然是先打印所有文件名,然后才读取文件。如何获取文件然后先读取文件内容而不是先获取所有文件?
async function readingDirectory(directory) {
try {
fileNames = await fs.readdir(directory);
fileNames.map(file => {
const absolutePath = path.resolve(folder, file);
log(absolutePath);
fs.readFile(absolutePath, (err, data) => {
log(data); // How to make it async await here?
});
});
} catch {
console.log('Directory Reading Error');
}
}
readingDirectory(folder);
答案 0 :(得分:1)
要使用 await
,您需要使用 fs.readFile()
和 fs.readdir()
的承诺版本,您可以在 fs.promises
上获得它们,如果您希望它们按顺序运行,请使用for
循环而不是 .map()
:
async function readingDirectory(directory) {
const fileNames = await fs.promises.readdir(directory);
for (let file of fileNames) {
const absolutePath = path.join(directory, file);
log(absolutePath);
const data = await fs.promises.readFile(absolutePath);
log(data);
}
}
readingDirectory(folder).then(() => {
log("all done");
}).catch(err => {
log(err);
});