【发布时间】:2013-12-23 06:48:57
【问题描述】:
我正在编写一个 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);
});
});
change 事件发生了两次,因此客户端被更新了两次。这不可能发生。它就像 watch 函数同时被调用两次,并且都在任何一个可以到达 truncate 命令之前执行。我如何防止这种情况发生?比如说,我不能阻止一个线程,因为我需要它实时响应其他文件。
感谢您的帮助。我是 Node.js 的新手,但到目前为止我很喜欢它。
【问题讨论】:
-
第二个事件被你截断文件触发...
-
这不是因为它用数据更新客户端两次。
标签: javascript node.js inotify