Javascript setInterval回调中出现异常
我在调用回调函数后出现以下错误:Javascript setInterval回调中出现异常,javascript,meteor,Javascript,Meteor,我在调用回调函数后出现以下错误: function callbackInterval(test) { Meteor._debug("Test"); } Meteor.setInterval(callbackInterval(test), 60000); 这是错误输出 Exception in setInterval callback: TypeError: undefined is not a function at _.extend.withValue (packages/meteor
function callbackInterval(test) {
Meteor._debug("Test");
}
Meteor.setInterval(callbackInterval(test), 60000);
这是错误输出
Exception in setInterval callback: TypeError: undefined is not a function
at _.extend.withValue (packages/meteor/dynamics_nodejs.js:56)
at packages/meteor/timers.js:6
at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108)
不能将带有参数的函数设置为回调函数。请改用如下匿名函数:
var callback = function () {
callbackInterval(test)
Meteor._debug("Test");
}
Meteor.setInterval(callbackInterval, 60000);
您需要向
setInterval
传递函数引用(名称或匿名函数),而不是调用函数
你想要:
function callbackInterval(test) {
Meteor._debug("Test");
}
Meteor.setInterval(function () {
callbackInterval(test)
}, 60000);
如果不需要传递callbackInterval
参数,则可以调用:
Meteor.setInterval(callbackInterval, 60000);
如果要将参数设置为回调函数 您可以使用如下参数调用回调函数
setInterval(function (){
callbackInterval(test)
}, 1000);
如果仍然需要,或者对于那些需要的人,正确的方法是:
function callbackInterval(test) {
Meteor._debug("Test");
}
Meteor.setInterval(callbackInterval, 60000);
由于测试参数将被注入函数,但我不知道set Interval是否会收到参数…FYI,您使用的不是匿名函数。`setInterval()1不需要匿名函数。所需的是传递函数引用,而不是实际调用函数并传递返回值,返回值是您正在执行的操作和OP正在执行的操作之间的差异。所以,正确的代码,但错误的解释。