完成了.on('xxx')的回调?

时间:2015-12-17 15:18:07

标签: javascript firebase

目前在仪表板页面上,我正在提取前25条评论并使用此代码显示它们

fba.orderByChild('when').limitToLast(25).on('child_added', function (d, c) { stuff });

但是为每个孩子调用了这个函数 - 除了将整个调用包装在Promise中之外,是否有一个回调可以在一系列调用完成时触发?

我想我需要在开始时更改此块以使用.once('value'),然后使用> TIMESTAMP附加child_added的监听器。

对于这样的事情,这是首选方法吗?

1 个答案:

答案 0 :(得分:1)

确实为每个孩子独立调用了Firebase child_事件。它们非常适合为每个孩子构建和更新UI元素。

请注意,Firebase数据已同步:添加新子项后,您将收到一个child_added个事件和一个child_removed个事件。这样可以轻松地对UI进行最小程度的更新。

如果您想批量获取所有匹配元素,请使用value事件:

fba.orderByChild('when')
   .limitToLast(25)
   .on('value', function (snapshot) {
       snapshot.forEach(function(child) {
           // child is now the snapshot of a specific child
       });
   });

如果在这种情况下添加了新的子项,则value事件将再次使所有子项都出现。因此,如果您要更新UI,您将重建整个UI。没错,只是不同。