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正在执行的操作之间的差异。所以,正确的代码,但错误的解释。