在我的Node.js应用程序中,我每1小时使用setInterval()
运行一个特定的函数。该功能正常执行约25天,然后计时器停止触发。
25天似乎非常接近Node.js的TIMEOUT_MAX
(2 ^ 31毫秒≈25天),但是我真的不明白为什么setInterval()
在那之后应该停止执行。
更新:
我认为这可能是由于Node.js中的以下错误引起的:setInterval callback function unexpected halt #22149
答案 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。