我编写了一个脚本,可以递归地异步修改目录中的JavaScript文件。它由一个名为search(dirname)
的函数和一个名为modify(filename)
的函数组成。其中,search(dirname)
函数用于搜索目录中的JavaScript文件,而modify(filename)
函数用于进行修改。
let totalFilesSearched = 0;
const search = (dir) => {
fs.readdir(dir, (err, list) => {
if (err) return;
list.forEach((filename) => {
const filepath = path.join(dir, filename);
if (filename.endsWith('.js')) {
modify(filepath);
} else if (fs.lstatSync(filepath).isDirectory()) {
search(filepath);
}
})
});
}
const modify = (filename) => {
fs.readFile(filename, 'utf8', (err, data) => {
if (err) console.log(err);
// ... my modification code ...
totalFilesSearched++;
});
}
search(args[0])
console.log(`Total files searched: ${totalFilesSearched}`);
我想在脚本结束时打印出
totalFilesSearched
,但由于我的代码是异步的,它会立即打印Total files searched: 0
。有人知道我怎样才能等到脚本即将结束时再打印出来吗?我遇到了麻烦,因为我的
search()
和modify()
函数都是异步的。