setInterval在调用的函数中似乎不喜欢()为什么?

【字号: 日期:2024-04-15浏览:28作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决setInterval在调用的函数中似乎不喜欢()为什么??

setInterval接受功能对象作为第一个参数。但是,当你这样做

setInterval(incidentController(123), 10 * 1000);

您传递的调用结果incidentController为undefined(在JavaScript中,如果函数未显式返回任何内容,则默认情况下undefined将返回)。这就是为什么您得到错误

Cannot read property ’apply’ of undefined

它正在尝试调用上的apply函数undefined。

使得传递参数值的便利性降低了一些,因为我无法在setInterval语句本身内部进行传递

不,先生。您可以方便地将参数setInterval本身传递给回调函数,如下所示

setInterval(incidentController, 10 * 1000, 123);

现在,incidentController每10秒调用一次when时,123将作为第一个参数传递给它。

解决方法

当我执行以下命令时,几秒钟incidentController后会被调用,10并且每秒钟都会继续执行而不会出现任何问题10:

// This works fine in nodejs v0.11.13setInterval(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语句内部进行操作。

相关文章: