Обработка файлов и проблема обратного вызова в узле JS - PullRequest
0 голосов
/ 04 января 2019

Мне нужно написать метод в Node, который будет выбирать файлы в соответствующих каталогах и выполнять некоторую обработку, получать результат и передавать их в другой API-интерфейс и возвращать окончательный результат.Моя структура каталогов выглядит как

Что я делаю, так это получаю список каталогов и сохраняю его, а затем поочередно получаю все файлы в определенном каталоге, а затем передаю в функцию processFile, где я будупредварительно обработав его, а затем, наконец, передайте результат этого внешнему API и верните окончательный результат.Затем выполните тот же процесс для другого файла, но где-то я потерялся в этих асинхронных вызовах и методах обратного вызова.Любой способ обращаться с ними правильно?

--------------------------------------
| Directory | File
--------------------------------------
| Dir1      | Dir1.txt
| Dir2      | Dir21.txt, Dir22.txt
| Dir3      | Dir3.txt

getpath = root
directories = getDirectories(getPath)
function getDirectories(path) {
    return fs.readdirSync(path).filter(function (file) {
        return fs.statSync(path + '/' + file).isDirectory();
    });
}

for (var dirs = 0; dirs < directories.length; dirs++) {
    documentPath = getPath + directories[dirs];

    fs.readdirSync(documentPath).forEach(file => {
        console.log(file);
        filesList.push(file)
        return filesList
    });

    for (var fileToSend = 0; fileToSend < filesList.length; fileToSend++) {
        var fileName = filesList[fileToSend]

        newFilePath = documentPath + '/' + fileName
        myFile.processFile(newFilePath, function (result, error) {
            if (error) {
                console.log(error)
            } else {
                var options = {
                    url: url,
                    headers: { 'Content-Type': 'text/plain' },
                    body: result
                };
                var req = request.post(options, function (error,
                    _response, body) {
                    if (error) {
                        console.error(error);
                    }
                    else {
                        console.log("Received response");
                    }
                });
            }
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...