一尘不染

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

node.js

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

当我只运行上面的代码时,它可以正常工作,但是当它在我的应用程序中时,它确实会中断,我无法指出代码的哪一部分会中断它,因为它很长,而且看起来没有“可疑”。无论如何,当间隔更短时,它就像我写的那样工作。


阅读 244

收藏
2020-07-07

共1个答案

一尘不染

而不是直接调用该函数,而是在回调内部提供它。

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

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

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

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

希望这可以帮助。

2020-07-07