【发布时间】:2014-12-10 22:48:11
【问题描述】:
我正在尝试递归查看目录,但遇到了命名空间问题。
我的代码如下所示:
for (i in files) {
var file = path.join(process.cwd(), files[i]);
fs.lstat(file, function(err, stats) {
if (err) {
throw err;
} else {
if (stats.isDirectory()) {
// Watch the directory and traverse the child file.
fs.watch(file);
recursiveWatch(file);
}
}
});
}
看来我只是在看统计的最后一个目录。我认为问题在于循环在 lstat 回调完成之前完成。因此,每次调用 lstat 回调时, file = 。我该如何解决这个问题?谢谢!
【问题讨论】:
-
问题是
var x不是 for 循环块的本地,并且您的回调function创建了一个闭包。如果您将function{}替换为function (file) { return function{}; }(file),也会起作用。
标签: javascript node.js asynchronous