Получить окончательное значение рекурсивного асинхронного поиска c в каталоге с помощью NodeJS - PullRequest
0 голосов
/ 12 июля 2020

Приведенный ниже код печатает [] в консоли, массив имен файлов фактически изменяется, но печать происходит до того, как это произойдет. Как получить окончательный массив имен файлов после того, как произойдут все изменения?

function search(directoryPath, searchString, filenames) {

    fs.readdir(directoryPath, { withFileTypes: true }, function (err, files) {

        if (err) {
            return console.log('Unable to scan directory: ' + err);
        }

        files.forEach(function (file) {

            if (file.isDirectory()) {
                if (file.name === searchString) {
                    
                    filenames.push(file.name)
                }
                search(directoryPath + "/" + file.name, searchString, filenames);
            }
        });
    });
}

const filenames = []
search(directoryPath, "1048594132", filenames);
console.log(filenames);

1 Ответ

0 голосов
/ 12 июля 2020

Самое простое решение - использовать только синхронные функции. Вы можете сделать это, заменив асинхронный fs.readdir() синхронным fs.readdirSyn c () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...