如何检测Firebase服务器调用何时完成

时间:2016-06-27 19:39:40

标签: javascript firebase firebase-realtime-database

我正在使用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岁。

所以我想:检测何时完成对服务器的调用以及检索了多少消息。但是如何?!

1 个答案:

答案 0 :(得分:1)

当您致电traverseMessages时,来自firebase的电话已经完成。因此,如果您想在追加所有数据后立即调用某些内容,则可以在for traverseMessages循环后立即执行此操作。

此外,如果您想知道firebase返回的对象数量,您可以使用以下内容:

Object.keys(messages.val()).length