Node.js setInterval()在25天后停止执行

时间:2018-08-14 06:51:34

标签: javascript node.js setinterval

在我的Node.js应用程序中,我每1小时使用setInterval()运行一个特定的函数。该功能正常执行约25天,然后计时器停止触发。

25天似乎非常接近Node.js的TIMEOUT_MAX(2 ^ 31毫秒≈25天),但是我真的不明白为什么setInterval()在那之后应该停止执行。

更新:

我认为这可能是由于Node.js中的以下错误引起的:setInterval callback function unexpected halt #22149

3 个答案:

答案 0 :(得分:2)

似乎错误(#22149)已在Node.js 10.9.0中修复。

也许还应注意,此错误似乎同时影响 setInterval()setTimeout()(据报道here),因此{回调函数中的{1}}无效。

答案 1 :(得分:0)

阅读github中的问题后,我认为他们将在下一个版本中对其进行修复。如果您需要在此之前解决,则可以尝试递归超时。签出我的代码:

function doSomething() {
    console.log('test');
}

function doSomethingInterval() {
   doSomething();
   setTimeout(doSomethingInterval, 1000);
}

doSomethingInterval();

答案 2 :(得分:0)

这是一个已知的错误。最简单的解决方法是改用setTimeout,然后在回调函数中调用另一个setTimeout。