Node.js 在 setinterval 中使用长间隔时崩溃
Node.js crashes when using long interval in setinterval
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 中的错误吗?
更新:
OS: Windows
, Node.js 版本: 0.12.4
当我 运行 只有上面的代码工作正常,但当它在我的应用程序中时它确实中断了,我无法指出我的代码的哪一部分中断了它,因为它很长而且看起来什么也没有"suspicious"。无论如何,当间隔较短时,它会像我写的那样工作。
对我来说,这看起来像是您使用的非标准模块,而不是本机模块。看看 global.process.moduleLoadList
它应该有条目
'NativeModule timers',
'Binding timer_wrap',
并检查您的代码,您没有导入第 3 方 timers.js
不要直接调用函数,而是在回调中给它赋值。
function createSasTokenTimer() {
console.log("Hello");
}
setInterval(function(){
createSasTokenTimer();
}, 3000000);
使用此方法,您将匿名函数传递给 setInterval。它将在每个时间间隔调用此函数一次,在此示例中为 3000000 毫秒。
目前,您可以只使用此代码。为了进一步理解,我建议研究匿名函数和闭包。
希望对您有所帮助。
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 中的错误吗?
更新:
OS: Windows
, Node.js 版本: 0.12.4
当我 运行 只有上面的代码工作正常,但当它在我的应用程序中时它确实中断了,我无法指出我的代码的哪一部分中断了它,因为它很长而且看起来什么也没有"suspicious"。无论如何,当间隔较短时,它会像我写的那样工作。
对我来说,这看起来像是您使用的非标准模块,而不是本机模块。看看 global.process.moduleLoadList
它应该有条目
'NativeModule timers',
'Binding timer_wrap',
并检查您的代码,您没有导入第 3 方 timers.js
不要直接调用函数,而是在回调中给它赋值。
function createSasTokenTimer() {
console.log("Hello");
}
setInterval(function(){
createSasTokenTimer();
}, 3000000);
使用此方法,您将匿名函数传递给 setInterval。它将在每个时间间隔调用此函数一次,在此示例中为 3000000 毫秒。
目前,您可以只使用此代码。为了进一步理解,我建议研究匿名函数和闭包。
希望对您有所帮助。