2017-12-19 14 views
0

私はゲーム作成時にfirebaseのスコアを更新するライブスコアリングサーバを持っています。現在、ノードサーバーには、firebaseを持つノードの種類を具体的に参照するコードを持つリスナーがあります。それはゲームがfirebaseで作成されたときにタイマーがゲームに5秒ごとに更新するように設定されており、ゲームの状態が閉じられた後に更新を停止し、今現状ではfirebaseの複数のリスナー

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

}, 5000); 

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

。 HERE

は問題です:

私がしようとすると、このような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 { 

答えて

0

理由は、私は、各リスタで同じclearTimer()関数を持っていたということでした。したがって、両方のリスナーで間隔がクリアされていました。

関連する問題