再帰的にディレクトリを監視しようとしていますが、私は名前空間の問題を抱えています。node.jsでディレクトリを再帰的に監視するapi
私のコードは次のようになります。
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);
}
}
});
}
私が唯一の最後のディレクトリstat'dを見ていることが表示されます。問題は、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);
}
}
});
});
問題は、 'var x'はforループブロックにとってローカルではなく、コールバック' function'がクロージャを作成することです。また、 'function {}'を 'function(file){return function {}; }(ファイル) '。 –