节点:在递归中遍历目录
Node: Traversing directories in a recursion
我对Node很陌生...我需要将 Node 的异步行为和回调结构锤炼到我的脑海中。在这里,我现在挣扎:
// REQUIRE --------------------------------------------------------------------
fs = require('fs');
path = require('path');
// FUNCTION readAllDirs -------------------------------------------------------
function readAllDirs(dir, result) {
if (!result) {
result = function() {};
};
fs.readdir(dir, function(err, list) {
if(err) { return result(err) };
list.forEach(function(file) {
var fullpath = path.resolve(dir, file);
fs.stat(fullpath, function(err, stat) {
if(err) { return result(err) };
if(stat && stat.isDirectory()) {
readAllDirs(fullpath);
//console.log('In: ' + fullpath);
result(null, fullpath);
}
});
});
});
}
// MAIN -----------------------------------------------------------------------
readAllDirs('/somedir', function(err, dirs) {
console.log(dirs);
});
我尝试遍历目录树。原则上,该功能运行良好...只要我不回调而是在控制台上打印目录名称。所有文件夹和子文件夹都按预期显示。但是当我进行回调时,不会调用比第一级更深的递归。
哗啦!谢谢大家!
你的问题就在这里,在if (stat ...)
分支内:
readAllDirs(fullpath);
您需要将提供的回调再次传递回递归:
readAllDirs(fullpath, result);
相关文章:
- 在Javascript中递归遍历树
- 遍历递归json树并合并
- 递归没有完全遍历具有嵌套对象的对象
- 节点.js遍历按字母顺序递归的目录
- Java 脚本:递归地遍历关联的 HTML 文件的 Dom,并打印遇到的元素类型
- 是否可以以非递归方式遍历 JavaScript 中的对象
- 递归循环遍历数组并返回项数
- 节点:在递归中遍历目录
- 遍历对象的递归函数
- 遍历递归结构并将数据添加到倒数第二个节点
- 递归遍历Shadow和Light DOM
- 用phantomjs递归地遍历网站页面
- 递归遍历javascript对象并用键替换值
- 如何递归地螺旋遍历矩阵
- 遍历网格的递归函数发疯了
- 递归地遍历对象以构建属性列表
- 递归地循环遍历树,并在迭代之间设置超时
- 没有循环的尾递归树遍历
- Javascript递归在遍历整个树之前完成
- 如何递归地遍历一个ul并找出其中有多少个ul's