我正在寫一個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
這不是因爲它使用數據更新客戶端兩次。 –