节点js中的文件处理和回调问题

时间:2019-01-04 03:50:21

标签: javascript node.js asynchronous callback

我需要在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");
                    }
                });
            }
        });
    }
}

0 个答案:

没有答案