Я пишу сервер 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);
});
});
Событие изменения происходит дважды, поэтому клиент дважды обновляется. Этого не может быть. Его, как функция часов, вызывается дважды в одно и то же время, и оба выполняются до того, как либо смогут перейти к команде truncate. Как мне это избежать? Я не могу, скажем, заблокировать поток, потому что мне нужно, чтобы он реагировал в реальном времени на другие файлы.
Благодарим за помощь. Я новичок в Node.js, но до сих пор мне это нравится.
Второе событие запускается вами, обрезая файл ... – Darkhogg
Это не потому, что он дважды обновляет клиент данными. –