首页 > 解决方案 > Node Js中的事件之间如何等待?

问题描述

我尝试使用 NodeJs 在每个事件“更改”之间设置时间间隔

我尝试使用 asetTimeout()但这不起作用,因为等待时间并同时处理所有文件。

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...

标签: javascriptnode.jsdom-events

解决方案


实际上,使用 setTimeout() 是正确的。这将在“更改”事件发生后 10 毫秒执行到 process 方法。但是,您可能需要在 setTimeout() 方法中包含 console.log 语句才能看到所需的输出。

fs.watch('Desktop/folder', function(event, filename){
  if (event == 'Change'){
    setTimeout(() => {
        console.log('processing...')
        process(filename);
    }, 10000)
)}})

推荐阅读