流星setInterval堆叠

时间:2014-12-23 08:36:29

标签: meteor

我正在使用Meteor.setInterval来计算游戏中玩家“动作点”的数量。当他们使用动作(如攻击)时,它会减少数量。但是,当事件被触发(攻击)时,它会更新我的数据库上的玩家配置文件,每次更新数据库时触发setInterval进行堆叠。它开始越来越快地反击。 编辑这就是问题所在。我不希望它更快。我只想要一个间隔运行。

这是我能找到的最接近的解决方案: prevent javascript setInterval function stacking up

没有完全正常工作,我找不到另一种方法来安排标志只有一个setInterval。

继承人的帮助:每个玩家都有不同的再生,这是从他们的个人资料中提取的。我已经为间隔替换了固定数字,并且在堆叠发生时执行了Session.get(),它保持不变。而不是数字我只是添加'x'所以它看起来像一个加载栏。

apTicker:function() {
  Session.set('apRegen', Meteor.user().profile.apRegen);
  Meteor.setInterval(function () {
    if (Session.get('ap').length < 25) {
      Session.set('ap', Session.get('ap')+"x");
      }
  }, Session.get('apRegen'))
},

谢谢。

1 个答案:

答案 0 :(得分:1)

这应该做你想要的:

var apTickerInterval; //To keep track of the interval
Session.set('apRegen', Meteor.user().profile.apRegen);
//...
apTicker : function()
{
  if(apTickerInterval)
    Meteor.clearInterval(apTickerInterval);

  apTickerInterval = Meteor.setInterval(function () {
    if (Session.get('ap').length < 25) {
      Session.set('ap', Session.get('ap')+"x");
    }
  }, Session.get('apRegen'));
}