【发布时间】:2014-12-03 20:52:59
【问题描述】:
我正在编写一个 NodeJS 模块,它从 Dropbox 复制一堆文件夹,并根据文件夹结构创建一个目录。让我头疼的部分是我需要获取主目录中所有文件夹的名称,然后是文件夹中所有文件的名称,然后再继续执行下一个功能。
这是我现在的流程:
- 使用 dropboxClient.readdir() 获取主目录中的文件夹列表
- 遍历文件夹并获取名称子文件夹(再次使用 dropboxClient.readdir())
- 遍历这些子文件夹并获取文件名。
- 如果文件是 Markdown 文件,请将名称添加到列表中
- 返回子目录下所有markdown文件的列表
还有一些伪代码:
function getListOfFiles() {
var subfolders = [];
var fileNames = [];
dbClient.readdir('', function(error, folders) {
folders.forEach(function(folder, index) {
subfolders.push(folder);
dbClient.readdir('/'+folder, function(error, subfolders) {
subfolders.forEach(function(subfolder, index) {
dbClient.readdir('/'+folder+'/'+subfolder, function(error, files) {
files.forEach(function(file, index) {
if (isMarkdownFile) {
fileNames.push(file)
}
});
});
});
});
}
});
return fileNames;
}
我研究了一些似乎应该解决这种情况的包以及 JS 生成器,但我不确定最简单的解决方案应该是什么。我的代码在 Node 0.11.3 上运行良好,因此生成器是一种选择,但这对我来说是一个新概念,我似乎找不到与我匹配的示例。
【问题讨论】:
标签: javascript node.js asynchronous callback generator