gpt4 book ai didi

javascript - 如果满足某些条件,则从 .on ("child_added".. 停止/突破

转载 作者:行者123 更新时间:2023-12-03 08:53:07 25 4
gpt4 key购买 nike

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

将新子项添加到数据库后 .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所以我现在正在收养新的 child ,整个过程又开始了。

所以最后是这样的:

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

最佳答案

您想要在添加子级时执行一些操作,并继续执行操作直到 timeFromFirebase < localTime 为 false。我认为 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;
}
}
}

关于javascript - 如果满足某些条件,则从 .on ("child_added".. 停止/突破,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com