我正在写一个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的新手,但到目前为止我很喜欢它。
第二个事件是由您截断文件触发的...... – Darkhogg
这不是因为它使用数据更新客户端两次。 –