Node.js сбой при использовании большого интервала в setinterval
function createSasTokenTimer() {
console.log("Hello");
}
setInterval(createSasTokenTimer, 3000000);
Я запускаю этот код, и через 50 минут я получаю следующую ошибку:
Hello
timers.js:265
callback.apply(this, args);
^
TypeError: Cannot read property 'apply' of undefined
at wrapper [as _onTimeout] (timers.js:265:13)
at Timer.listOnTimeout (timers.js:110:15)
Когда интервал времени короче ( 2000000, например), все работает нормально.
Является ли это ошибкой в Node.js?
Обновление:
ОС: Windows
, Node.js версия: 0.12.4
Когда я запускаю только код выше, он работает нормально, но он прерывается, когда он внутри моего приложения, я не могу указать, какая часть моего кода разбивает его, поскольку он очень длинный, и ничто не выглядит "подозрительным". Во всяком случае, когда интервал короче, он работает так, как я писал.
Ответы
Ответ 1
Вместо того, чтобы вызывать функцию Прямо, дайте ее внутри обратного вызова.
function createSasTokenTimer() {
console.log("Hello");
}
setInterval(function(){
createSasTokenTimer();
}, 3000000);
Используя этот метод, вы передаете анонимную функцию setInterval. Он будет вызывать эту функцию один раз за интервал, который составляет 3000000 миллисекунд в этом примере.
Теперь вы можете просто использовать этот код. Для дальнейшего понимания я предлагаю исследовать анонимные функции и закрытие.
Надеюсь, что это поможет.
Ответ 2
Для меня это выглядит как нестандартный вариант, который вы используете вместо естественного. Посмотрите global.process.moduleLoadList
он должен иметь записи
'NativeModule timers',
'Binding timer_wrap',
И проверьте свой код, что вы не импортируете сторонних таймеров .js