Как ждать между событиями в Node Js? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь использовать NodeJ для установки временного интервала между каждым событием «изменение»

Я попытался использовать 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...

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вам нужно использовать setInterval для ввода интервалов в обработку. Вы можете прочитать больше об этом здесь

fs.watch('Desktop/folder', function(event, filename){
if (event == 'Change'){
setInterval(() => {
    console.log('processing...')
    process(filename);
}, 10000)
)}})
0 голосов
/ 18 апреля 2019

На самом деле вы правильно используете setTimeout (). Это будет выполнено для метода процесса через 10 мс после события «Изменить». Однако вам, вероятно, необходимо включить оператор console.log в метод setTimeout (), чтобы увидеть желаемый результат.

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