在setinterval中使用长间隔时,Node.js崩溃

jan*_*niv 29 javascript setinterval node.js

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

setInterval(createSasTokenTimer, 3000000);
Run Code Online (Sandbox Code Playgroud)

我运行此代码,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)
Run Code Online (Sandbox Code Playgroud)

当间隔时间较短(例如2000000)时,一切正常.

这是Node.js中的错误吗?


更新:

操作系统:Windows,Node.js版本:0.12.4

当我只运行上面的代码时,它工作正常,但它确实在我的应用程序内部中断,我无法指出我的代码的哪一部分打破它,因为它非常冗长,没有任何东西看起来"可疑".无论如何,当间隔时间缩短时,它就像我写的那样.

SUN*_*N K 1

不要直接调用函数,而是将其放在回调中。

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

setInterval(function(){
 createSasTokenTimer();
}, 3000000);
Run Code Online (Sandbox Code Playgroud)

使用此方法,您可以将匿名函数传递给 setInterval。它将在每个时间间隔(本例中为 3000000 毫秒)调用此函数一次。

现在,您可能可以只使用这段代码。为了进一步理解,我建议研究匿名函数和闭包。

希望这可以帮助。

  • 我非常熟悉javascript中的异步编程,但至少在浏览器中仍然不明白`setInterval(funcName,delay)`和`setInterval(function(){funcName()},delay)`之间有什么区别' javascript 它们是相同的。 (2认同)
  • 即使它有效,这个答案也是错误的。解释完全不相关 (2认同)