【发布时间】:2019-04-17 17:54:06
【问题描述】:
我尝试使用 NodeJs 在每个事件“更改”之间设置一个时间间隔
我尝试使用setTimeout() 但这不起作用,因为等待时间并同时处理所有文件。
fs.watch('Desktop/folder', function(event, filename){
if (event == 'Change'){
// sleep(10);
console.log('processing...')
process(filename);
)}})
我做错了什么?
预期结果:
(将 5 个文件放在“桌面/文件夹”中)
> processing...
(wait 10 seconds)
> processing...
(wait 10 seconds)
> processing...
(wait 10 seconds)
> processing...
(wait 10 seconds)
> processing...
(wait 10 seconds)
实际结果:
(将 5 个文件放在“桌面/文件夹”中)
(wait 10 seconds)
> processing...
> processing...
> processing...
> processing...
> processing...
【问题讨论】:
-
“我做错了什么?” 您认为
setTimeout以某种方式阻止了当前的 JavaScript 执行,但事实并非如此。它只是安排一些代码在将来执行,当前执行上下文的剩余语句仍然被评估。如果你想要你描述的行为,你必须建立自己的队列。事件处理程序将项目添加到队列中,并且其他一些函数每 10 秒提取一次。
标签: javascript node.js dom-events