@timonck

Почему не получается добавить результат поиска в массив?

У меня есть функция которая рекурсивно ищет файлы по расширению, все работает нормально, но не получается добавить результат поиска в масив
let result = []
let walk = function (dir) {
    fs.readdir(dir, function (err, list) {
        list.forEach((item) => {
            let itemPath = path.join(dir, item);
            fs.stat(itemPath, (e, stats) => {
                if (stats.isDirectory()) {
                    walk(itemPath);
                } else {
                    if(extension(itemPath)){
                        // console.log(itemPath)
                        result.push(itemPath)
                    }
                }
            });
        });
    })
}
walk(pathSupplied)
console.log(result)


Как это можно исправить и правильная ли вообще получилась эта функция?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ответы на вопрос 1
smilingcheater
@smilingcheater
Потому что fs.readdir - асинхронная. На момент консоль лога она ещё не выполнилась.
Либо переписывайте на async/await, либо на промисы, либо (в самом крайнем случае если понимаете чем это грозит) используйте синхронную readdirSync.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы