在Node.js中观看文件

我正在编写一个Node.js服务器,该服务器监视一个充满空文件的目录以进行更改。 当文件改变时,它通知客户端,然后清空文件。 手表代码是:

fs.watch("./files/", function(event, targetfile){ console.log(targetfile, 'is', event) fs.readFile("./files/"+targetfile, 'utf8', function (err,data) { if (err) { return console.log(err); } if (data=="") return; //This should keep it from happening //Updates the client here fs.truncate("./files/"+targetfile, 0); }); }); 

更改事件发生两次,客户端更新两次。 这不可能发生。 它像watch函数一样被同时调用两次,并且都可以在得到truncate命令之前执行。 我如何防止这种情况发生? 我不能阻止一个线程,因为我需要它实时响应其他文件。

感谢您的帮助。 我是Node.js的新手,但到目前为止我很喜欢它。

您可以使用下划线实用程序方法一次 ,使该function不再执行一次。 你必须让你的代码如下所示:

 var func = _.once(function(targetfile){ fs.readFile("./files/"+targetfile, 'utf8', function (err,data) { if (err) { return console.log(err); } if (data=="") return; //This should keep it from happening //Updates the client here fs.truncate("./files/"+targetfile, 0); }); }); fs.watch("./files/", function(event, targetfile){ console.log(targetfile, 'is', event); func(targetfile); }); 

如果你想多次执行它,但是你想过滤掉重复的事件,你可以使用一个函数,例如油门或去抖动 。

Interesting Posts