Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Вместо того, чтобы вызывать функцию Прямо, дайте ее внутри обратного вызова.

function createSasTokenTimer() {    
  console.log("Hello");
}

setInterval(function(){
 createSasTokenTimer();
}, 3000000);

Используя этот метод, вы передаете анонимную функцию setInterval. Он будет вызывать эту функцию один раз за интервал, который составляет 3000000 миллисекунд в этом примере.

Теперь вы можете просто использовать этот код. Для дальнейшего понимания я предлагаю исследовать анонимные функции и закрытие.

Надеюсь, что это поможет.

Ответ 2

Для меня это выглядит как нестандартный вариант, который вы используете вместо естественного. Посмотрите global.process.moduleLoadList он должен иметь записи

 'NativeModule timers',
 'Binding timer_wrap',

И проверьте свой код, что вы не импортируете сторонних таймеров .js