Javascript Firebase中何时加载数据?

Javascript Firebase中何时加载数据?,javascript,firebase,Javascript,Firebase,我的数据按日期和增量ID排序,如下所示: 20140622 价值1 价值2 20140623 价值3 价值4 为了检测何时添加新日期,我设置了一个on('child_added')侦听器,然后设置了另一个on('child_added')侦听器来检测该日期内的新值,因为on('child_added')仅对直接的孩子触发 为了避免重复使用并加快加载速度,我想知道该快照的所有数据是在什么时候传输的:在定义新的子项时,还是在使用.val()函数时?在使用on()或once()建立侦听器时

我的数据按日期和增量ID排序,如下所示:

  • 20140622
    • 价值1
    • 价值2
  • 20140623
    • 价值3
    • 价值4
为了检测何时添加新日期,我设置了一个on('child_added')侦听器,然后设置了另一个on('child_added')侦听器来检测该日期内的新值,因为on('child_added')仅对直接的孩子触发


为了避免重复使用并加快加载速度,我想知道该快照的所有数据是在什么时候传输的:在定义新的子项时,还是在使用.val()函数时?

在使用on()或once()建立侦听器时,会立即下载数据并保持本地缓存和同步,直到断开所有侦听器的连接

通常不需要为嵌套的子项建立一个
child\u added
侦听器,因为它们已经存在于作为父项的一部分下载的数据中:

var ref = new Firebase(URL);
ref.on('child_added', function(snap) {
   console.log('parent rec', snap.name());
   snap.forEach(function(childSnap) {
      console.log('child rec', childSnap.name());
   });
});
然而,嵌套的
child\u-added
事件也没有危害;这一切都由Firebase内部优化,这些值将立即从本地缓存的数据中返回:

var ref = new Firebase(URL);
ref.on('child_added', function(snap) {
   console.log('parent rec', snap.name());
   snap.ref().on('child_added', function(snap) {
      console.log('child rec', snap.nam());
   });
});

这里唯一需要注意的是,如果您想稍后调用这些事件侦听器上的off(),则必须先断开所有这些侦听器,然后才能断开服务器连接并清除所有缓存数据。

实际上,我要做的是避免off()调用出现此问题,定义两个“on”侦听器,但不是嵌套的:
fb1=new Firebase('https://XXX.firebaseio.com/20140623/');fb2=新的火力基地('https://XXX.firebaseio.com/20140623/value_3“);
Firebase是否也会对此进行优化?也会进行优化。数据集会缓存一次并在本地使用,根据需要从服务器应用增量。