setTimeout — JavaScript кучи из памяти

#node.js #timeout #settimeout #infinite-loop

#node.js #тайм-аут #settimeout #бесконечный цикл

Вопрос:

Итак, я хочу создать программу, которая получала бы данные из веб-api каждые 15 минут и обрабатывала их. Этот процесс будет бесконечным (до тех пор, пока программа не будет закрыта). Я экспериментировал с тайм-аутами, но на моем компьютере быстро заканчивается память (24 ГБ ОЗУ), поэтому мой код, очевидно, очень плохой способ сделать это.Часть кода, связанная с обработкой и сбором данных, выполнена и работает нормально, что не работает, так это часть бесконечного цикла. Мой взгляд на эту проблему был, по сути, таков:

 for (i = 0;;   i) {
  setDelay(i);
}

function setDelay(i) {
  setTimeout(function(){
    //More code goes in here.
    console.log(i);
  }, 1000);
}
  

Конечно, должен быть лучший способ бесконечно выполнять фрагмент кода каждые X минут, не заполняя оперативную память вашего ПК. Есть идеи?

Ответ №1:

Возможно, вы захотите использовать setInterval , который делает именно то, что вам нужно. Фрагмент

 setInterval(function () {
  console.log('Some message...');
}, 100);
  

будет запускать console.log оператор каждые 100 миллисекунд, не вмешиваясь в стек и не тратя системные ресурсы.