Я написал скрипт, который рекурсивно асинхронно изменяет js-файлы в каталоге.Он состоит из функции search(dirname)
, которая выполняет поиск в каталоге файлов js, и функции 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()
асинхронны.