@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.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы