停止/突破.on(" child_added" ..如果满足某些条件

时间:2015-09-16 11:57:46

标签: javascript jquery firebase

好吧,所以我设置工作的方式就是这样的。

将新子项添加到数据库.on("child_added"...后会被触发:

ref.on("child_added", function(snapshot, prevChildKey) {
   ...
}

其中ref是对firebase的引用。这个孩子包含的时间戳与某个周期性事件发生后的本地时间进行比较,例如:timeFromFirebase < localTime,而这是真的我执行某些操作。 我还有一个名为canPerformAction的变量,最初设置为true,然后在false内设置为child_added,因此我可以忽略其他信号,直到我完成当前的行动,这里是

var canPerformAction = true;
ref.on("child_added", function(snapshot, prevChildKey) {
   if (!canPerformAction) return;
   canPerformAction = false;
   ...
}

现在,如果ref.on("child_added"..变为假,我需要某种方式来突破/完成timeFromFirebase < localTime。在发生这种情况的同时,我将设置canPerformAction = true所以我现在正在接收新的孩子并且整个过程再次开始。

所以最后是这样的:

var canPerformAction = true;
   ref.on("child_added", function(snapshot, prevChildKey) {
   if (!canPerformAction) return;

   canPerformAction = false;

   //time is checked repeatedly, I simplified it to if statement here
   if (timeFromFirebase < localTime) {
      ...
   } else {
      canPerformAction = true;
         //Break out here
   }
}

相关来源:http://firebase.com

1 个答案:

答案 0 :(得分:1)

你想在添加一个孩子时做一些事情,并继续做一些事情,直到timeFromFirebase&lt; localTime是假的。我认为while循环就是你想要的。

ref.on("child_added", function(snapshot, prevChildKey) {
    while(timeFromFireBase >= localTime){
        //do some stuff
    }
}

编辑 - 如果你想使用canPerformAction标志,你可以像这样设置它,但我不认为如果时间是唯一改变它的话就必须保留标志

canPerformAction = true
ref.on("child_added", function(snapshot, prevChildKey) {
    while(canPerformAction = true){
        if(timeFromFireBase < localTime){
            ...
        }else{
            canPerformAction = false;
        }
    }
}