用node.js api递归地查看目录

时间:2012-04-28 03:58:22

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

2 个答案:

答案 0 :(得分:2)

您可以考虑使用:(假设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);
      }
    }
  });
});

答案 1 :(得分:0)

为此目的有node-watch个包。