目前在仪表板页面上,我正在提取前25条评论并使用此代码显示它们
fba.orderByChild('when').limitToLast(25).on('child_added', function (d, c) { stuff });
但是为每个孩子调用了这个函数 - 除了将整个调用包装在Promise中之外,是否有一个回调可以在一系列调用完成时触发?
我想我需要在开始时更改此块以使用.once('value'),然后使用> TIMESTAMP附加child_added的监听器。
对于这样的事情,这是首选方法吗?
答案 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。没错,只是不同。