【发布时间】:2016-06-14 09:53:27
【问题描述】:
当监听“child_added”事件时:
ref.on("child_added", function (snapshot) {
});
此回调函数最初将为引用中存在的每个子项运行一次。
该位置的每个初始孩子都会触发一次此事件,每次添加新孩子时都会再次触发。
https://firebase.google.com/docs/reference/node/firebase.database.Reference
我想利用这个事实和排序函数来构造一个有序数组:
orderedArray = [];
ref.orderByValue("rating").on("child_added", function (snapshot) {
orderedArray.push(snapshot.val())
});
// how do I run a callback after the last child has been added?
但是,没有办法(据我所知)知道上次调用 child_added 回调的时间,因此在将最后一个子元素添加到我的数组后,我无法准确地运行我自己的回调。
这是我现在的解决方法:
orderedArray = [];
ref.orderByValue("rating").on("child_added", function (snapshot) {
orderedArray.push(snapshot.val())
});
setTimeout(function() {
ref.off("child_added") // unbind event
callback()
}, 3000)
这很粗略,尤其是在从数据库中获取所有数据需要 3 秒以上的情况下。
这里有什么想法吗?
【问题讨论】:
标签: javascript firebase firebase-realtime-database