在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); });
如果你想多次执行它,但是你想过滤掉重复的事件,你可以使用一个函数,例如油门或去抖动 。