Javascript 为什么使用Meteor.setInterval调用方法会引发TypeError异常?

Javascript 为什么使用Meteor.setInterval调用方法会引发TypeError异常?,javascript,meteor,setinterval,Javascript,Meteor,Setinterval,我正在尝试使用Meteor.setInterval函数,但在使用时遇到了一些问题 这是我的密码: Meteor.methods({ init : function(){ console.log('test'); }, start : function(period){ console.log('start : period '+period); Meteor.setInterval(Meteor.call('init'),period); } });

我正在尝试使用Meteor.setInterval函数,但在使用时遇到了一些问题

这是我的密码:

Meteor.methods({
  init : function(){
    console.log('test');
  },
  start : function(period){
    console.log('start : period '+period);

    Meteor.setInterval(Meteor.call('init'),period);
  }
});

Meteor.call('start', 100);
我在控制台中看到“test”1次,然后出现以下错误:

setInterval回调中出现异常:TypeError:undefined不是函数

我一直在研究这个问题:但我用了不同的方法(使用
Method.methods

发生了什么以及如何修复它?

请看这一行:

Meteor.setInterval(Meteor.call('init'),period);
现在试着想想引擎的功能。首先,
Meteor.setInterval
。他需要的是:

  • 回拨
  • 毫秒数
你通过什么?毫秒数,对于您传递的回调,
Meteor.call('init')
。引擎看到您的
调用
,并执行它,因为这是您要求他对括号所做的。你的电话什么也不回。然后,
setInterval
尝试不执行任何操作

那么,如何将带有参数的函数传递给Meteor.setInterval?一种方法是将其包装在封口内:

Meteor.setInterval(function() {
  Meteor.call('init'); 
}, period });
这样,您的
调用
不会立即执行,它只在
setInterval
使用回调时执行,然后回调执行您的
调用

您还可以部分应用
调用
。有两种方法:

  • 本地人:

    Meteor.setInterval(Meteor.call.bind(null, 'init'), period);
    
  • 与:

  • 请看这一行:

    Meteor.setInterval(Meteor.call('init'),period);
    
    现在试着想想引擎的功能。首先,
    Meteor.setInterval
    。他需要的是:

    • 回拨
    • 毫秒数
    你通过什么?毫秒数,对于您传递的回调,
    Meteor.call('init')
    。引擎看到您的
    调用
    ,并执行它,因为这是您要求他对括号所做的。你的电话什么也不回。然后,
    setInterval
    尝试不执行任何操作

    那么,如何将带有参数的函数传递给Meteor.setInterval?一种方法是将其包装在封口内:

    Meteor.setInterval(function() {
      Meteor.call('init'); 
    }, period });
    
    这样,您的
    调用
    不会立即执行,它只在
    setInterval
    使用回调时执行,然后回调执行您的
    调用

    您还可以部分应用
    调用
    。有两种方法:

  • 本地人:

    Meteor.setInterval(Meteor.call.bind(null, 'init'), period);
    
  • 与:

  • 请看这一行:

    Meteor.setInterval(Meteor.call('init'),period);
    
    现在试着想想引擎的功能。首先,
    Meteor.setInterval
    。他需要的是:

    • 回拨
    • 毫秒数
    你通过什么?毫秒数,对于您传递的回调,
    Meteor.call('init')
    。引擎看到您的
    调用
    ,并执行它,因为这是您要求他对括号所做的。你的电话什么也不回。然后,
    setInterval
    尝试不执行任何操作

    那么,如何将带有参数的函数传递给Meteor.setInterval?一种方法是将其包装在封口内:

    Meteor.setInterval(function() {
      Meteor.call('init'); 
    }, period });
    
    这样,您的
    调用
    不会立即执行,它只在
    setInterval
    使用回调时执行,然后回调执行您的
    调用

    您还可以部分应用
    调用
    。有两种方法:

  • 本地人:

    Meteor.setInterval(Meteor.call.bind(null, 'init'), period);
    
  • 与:

  • 请看这一行:

    Meteor.setInterval(Meteor.call('init'),period);
    
    现在试着想想引擎的功能。首先,
    Meteor.setInterval
    。他需要的是:

    • 回拨
    • 毫秒数
    你通过什么?毫秒数,对于您传递的回调,
    Meteor.call('init')
    。引擎看到您的
    调用
    ,并执行它,因为这是您要求他对括号所做的。你的电话什么也不回。然后,
    setInterval
    尝试不执行任何操作

    那么,如何将带有参数的函数传递给Meteor.setInterval?一种方法是将其包装在封口内:

    Meteor.setInterval(function() {
      Meteor.call('init'); 
    }, period });
    
    这样,您的
    调用
    不会立即执行,它只在
    setInterval
    使用回调时执行,然后回调执行您的
    调用

    您还可以部分应用
    调用
    。有两种方法:

  • 本地人:

    Meteor.setInterval(Meteor.call.bind(null, 'init'), period);
    
  • 与:


  • 非常感谢你的好解释,它现在运行得很好:)非常感谢你的好解释,它现在运行得很好:)非常感谢你的好解释,它现在运行得很好:)非常感谢你的好解释,它现在运行得很好:)