firebase上的多个监听器

时间:2017-12-19 15:19:16

标签: javascript node.js firebase firebase-realtime-database

我有一个实时评分服务器,可以在创建游戏时更新firebase中的分数。目前,节点服务器有一个监听器,下面的代码专门引用带有firebase的节点类型。

ref.orderByChild("league").equalTo('NBA').on("value", function(snapshot) {
refreshInterval = setInterval(function() {
  nbafile.nbaUpdate(snapshot.val());

}, 5000);

 }, function(errorObject) {});
};

现在,当在firebase中创建游戏时,计时器设置为每5秒更新一次游戏,并在游戏状态关闭后停止更新。

这是问题所在:

如果我尝试为NCAAB等其他运动添加额外的监听器,则它永远不会被激活,或者它们都被呼叫,但计时器不会停止。

ref.orderByChild("league").equalTo('NCAAB').on("value", function(snapshot) {
refreshInterval = setInterval(function() {
  cbbfile.cbbUpdate(snapshot.val());
}, 5000);
}, function(errorObject) {});

}

无论哪种功能首先被称为先例,另一项运动都不会被激活。

下面是一段完整的代码以及游戏指向的if语句。

    const startUpdate = function(db, ref) {

  db = admin.database();
  exports.db = db;
  ref = db.ref('game');
  exports.ref = ref;
  console.log('-----------------------------------');
  ref.orderByChild("league").equalTo('NBA').on("value", function(snapshot) {
    refreshInterval = setInterval(function() {
      nbafile.nbaUpdate(snapshot.val());

    }, 5000);

  }, function(errorObject) {});

};

const startUpdate2 = function(db, ref) {

  db = admin.database();
  exports.db = db
  ref = db.ref('game');
  exports.ref = ref;
  console.log('-----------------------------------');
  ref.orderByChild("league").equalTo('NCAAB').on("value", function(snapshot) {
    refreshInterval = setInterval(function() {
      cbbfile.cbbUpdate(snapshot.val());
    }, 5000);

  }, function(errorObject) {});
}

nbaupdate.js

    let nbaUpdate = function(games) {
  console.log("Professional Basketball");
  if (games === null) {
    console.log('Games object empty');
    return;
  }
  for (var id in games) {
    if (games[id].league === 'NCAAB');
    if (ts >= games[id].scheduledTimeUnix);
    if ((games[id].status == 'complete') || (games[id].status == 'closed')) {
      sports.clearTimer();
      console.log(games[id].status)
    } else {

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是我在每个列表器上都有相同的clearTimer()函数。因此,两个听众的间隔都在清除。