javascript - 使用 node.js api 递归地监视目录

标签 javascript node.js asynchronous

我正在尝试递归地监视目录,但偶然发现了命名空间问题。

我的代码如下所示:

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 = .我该如何解决这个问题?谢谢!

最佳答案

您可能会考虑使用:(假设 ES5 并且 files 是文件名的 Array)

files.forEach(function(file) {
  file = path.join(process.cwd(), file);
  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);
      }
    }
  });
});

关于javascript - 使用 node.js api 递归地监视目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360444/

相关文章:

JavaScript 错误 "Function is expected"

node.js - nodejs检查url是否存在但不下载

javascript - 在函数内部修改变量后,为什么变量未更改? -异步代码引用

javascript - 如何创建一个跟踪股票价格的 Javascript 对象?

javascript - Joyent SmartOS : Installing NPM Packages

javascript - 使用 Javascript 更新表总计

javascript - 如何将标记添加到 MapBox GL JS map ?

javascript - 使用nodejs在谷歌地图上绘制几个标记

node.js - 使用 $group(aggregation) 返回多个对象

c# - 如何在观察 CancellationToken 的同时等待可等待的对象?