Когда я выполняю следующее, incidentController
вызывается после 10
секунд и продолжает выполняться без проблем через каждые 10
секунд:setInterval, похоже, не нравится() в функции, которую он вызывает. Зачем?
// This works fine in nodejs v0.11.13
setInterval(incidentController, 10 * 1000);
function incidentController() {
console.log ('executed');
}
Однако это выполняет сразу и выдает следующее сообщение об ошибке на второй итерации:
//This doesn't. The parens which wrap (123) cause the error.
setInterval(incidentController(123), 10 * 1000);
function incidentController (someInt) {
console.log ('executed: ', someInt);
}
Ошибка:
timers.js:287
callback.apply(this, args);
^
TypeError: Cannot read property 'apply' of undefined
at wrapper [as _onTimeout] (timers.js:287:13)
at Timer.listOnTimeout (timers.js:133:15)
Кажется incidentController
есть/становится undefined
как-то. Может кто-нибудь объяснить, почему это ожидаемое поведение (я предполагаю, что это так или иначе)?
Я могу обойти это довольно легко, но мне просто интересно, почему он ведет себя таким образом - делает передачу значений параметров немного менее удобной, так как я не могу сделать это внутри самого оператора setInterval
.
потому, что вы выполняете функцию! :) У него нет подсказки, вы хотите назначить ссылку на него. – epascarello
[Параметры передачи в функции setInterval] (http://stackoverflow.com/questions/457826/pass-parameters-in-setinterval-function)/[Как передать параметр в callbackTimeout()?] (Http: //переполнение стека.com/questions/1190642/how-can-i-pass-a-parameter-to-a-setimeout-callback) –