我知道我在下面的函数中提前返回了,如何将递归的 promises 链接到我的结果中?
我的目标是获取一个包含目录及其所有子目录中文件列表的数组。该数组是单维度的,在此示例中使用 concat。
我的目标是获取一个包含目录及其所有子目录中文件列表的数组。该数组是单维度的,在此示例中使用 concat。
function iterate(body) {
return new Promise(function(resolve, reject){
var list = [];
fs.readdir(body.path, function(error, list){
list.forEach(function(file){
file = path.resolve(body.path, file);
fs.stat(file, function(error, stat){
console.log(file, stat.isDirectory());
if(stat.isDirectory()) {
return iterate({path: file})
.then(function(result){
list.concat(result);
})
.catch(reject);
} else {
list.push(file);
}
})
});
resolve(list);
});
});
};