运行这两个代码应该有什么不同吗?
ref.on('child_added',function(child,prev){
console.log(child.key+prev);
}
ref.off();
和
ref.once('child_added',function(child,prev){
console.log(child.key+prev);
}
我很惊讶第二个不会在孩子们之间进行迭代!
我在这里做错了什么(编辑 - >)以获取孩子的完整列表?
答案 0 :(得分:7)
当您使用once
时,您要求的是指定类型的单个事件。因此once("child_added"
会触发一个child_added
事件。
由于你订购电话的方式,你的on
多次开火,这可能是竞争条件。我希望这也只能调用一次:
ref.on('child_added',function(child,prev){
console.log(child.key+prev);
ref.off();
}
但我必须承认这是非常罕见的,所以我不认为我曾经测试过它。
答案 1 :(得分:0)
除了@Puf的答案外,我还会在您应该了解的文档中添加以下报价:
添加查询以限制您的监听操作返回的数据并 使用仅下载更新数据的侦听器,例如on() 而不是一次()。保留.once()用于真正不做的动作 需要数据更新。
来源:https://firebase.google.com/docs/database/usage/optimize
另一个有用的链接:https://firebase.google.com/docs/database/usage/billing