我正在使用Google Firebase将数据加载到我的应用中。我正在做一个初始加载,得到最后40条聊天消息,如下所示:
UITableViewHeaderFooterView
然后遍历:
firebase.database().ref('/messages').limitToLast(40).once('value', function(messages) {
traverseMessages(messages.val());
});
创建HTML元素:
// traverse messages function
function traverseMessages(obj) {
for (var prop in obj) {
var message = obj[prop].message;
var chatUser = obj[prop].username;
// populate function with data
createChatElements(chatUser, message);
};
};
元素附加到// build html for chat elements
function createChatElements(chatUser, message) {
// build HTML
var chatHTML = '<div class="chat-message">';
chatHTML += '<h5 class="chat-message-username">' + chatUser + '</h5>';
chatHTML += '<p class="chat-message-message">' + message + '</p>';
chatHTML += '</div>';
// function to append chat
appendChatToStaging(chatHTML);
};
当附加了所有消息后,我想用一个函数触发一个事件。
但我似乎无法弄清楚如何检测所有消息是否已附加,因为我不知道数据库中有多少消息。有时候不到40岁。
所以我想:检测何时完成对服务器的调用以及检索了多少消息。但是如何?!
答案 0 :(得分:1)
当您致电traverseMessages
时,来自firebase的电话已经完成。因此,如果您想在追加所有数据后立即调用某些内容,则可以在for
traverseMessages
循环后立即执行此操作。
此外,如果您想知道firebase返回的对象数量,您可以使用以下内容:
Object.keys(messages.val()).length