Javascript 如何检测Firebase servercall何时完成

Javascript 如何检测Firebase servercall何时完成,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我正在使用Google Firebase将数据加载到我的应用程序中。我正在进行初始加载,以获取最后40条聊天信息,如下所示: firebase.database().ref('/messages').limitToLast(40).once('value', function(messages) { traverseMessages(messages.val()); }); 然后遍历: // traverse messages function function traverseMes

我正在使用Google Firebase将数据加载到我的应用程序中。我正在进行初始加载,以获取最后40条聊天信息,如下所示:

firebase.database().ref('/messages').limitToLast(40).once('value', function(messages) {
    traverseMessages(messages.val());
});
然后遍历:

// 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);
   };
};
创建HTML元素:

// 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);
};
//为聊天元素构建html
函数createChatElements(聊天用户、消息){
//构建HTML
var chatHTML='';
chatHTML+=''+chatUser+'';
chatHTML+='

'+message+'

'; chatHTML+=''; //附加聊天功能 附录chattostaging(chatHTML); };
元素被附加到

当所有消息都被追加后,我想用一个函数触发一个事件

但我似乎不知道如何检测是否所有的消息都被附加了,因为我不知道数据库中有多少消息。有时不到40人


所以我想:检测对服务器的调用何时完成,以及检索了多少条消息。但是怎么做

调用
traverseMessages
时,来自firebase的调用已经完成。因此,如果您想在附加所有数据之后立即调用某个对象,可以在
遍历消息中的
for
循环之后立即调用

此外,如果您想知道firebase返回了多少对象,可以使用以下选项:

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

嘿,贾巴,让我知道我的回答是否有用,或者你是否还有任何疑问。谢谢。嗨,没用。结果很奇怪。也许是因为我自己的代码太乱了。我现在想出了另一个办法:)谢谢你和我一起思考!