当child_added完成时会做一些事情

时间:2016-11-22 13:36:50

标签: firebase firebase-realtime-database

您好我需要Firebase的帮助,在我的项目中我有很多空间。当会员选择房间时,它将滚动到底部。但是函数在child_added追加之前滚动到底部运行。 child_added完成后,如何将功能滚动到底部?如果我在displayChatMessage中添加提醒,它会始终先提醒,一旦完成,它会追加

myDataRef.limitToLast(5).on('child_added', function (snapshot,prevChildKey){
  var message = snapshot.val();
 displayChatMessage(snapshot.key, message.name, message.text');

});

function displayChatMessage(key,name,text){
 var html = '<div id="'+key+'">'+name+'</div>';
$('#addhere').append(html);
}

1 个答案:

答案 0 :(得分:1)

由于执行asynchronous而执行。当您执行synchronously某事时,等待它完成,然后再继续执行另一项任务。执行asynchronously时,您可以在完成之前继续执行其他任务。 在您的情况下,您需要在scroll_to_bottom()追加&amp;之后调用您的函数displayChatMessage为此你应该使用回调。 请参阅以下使用回调的示例..

全局变量

​var allUserData = [];

打印到控制台的通用logStuff函数

​function logStuff (userData) {
if ( typeof userData === "string")
{
    console.log(userData);
}
else if ( typeof userData === "object")
{
    for (var item in userData) {
        console.log(item + ": " + userData[item]);
    }
}}

//一个带两个参数的函数,最后一个是回调函数

function getInput (options, callback) {
allUserData.push (options);
callback (options);
}

//当我们调用getInput函数时,我们将logStuff作为参数传递。 //因此logStuff将是在getInput函数

中回调(或执行)的函数
getInput ({name:"Rich", speciality:"JavaScript"}, logStuff);

//姓名:Rich //专业:JavaScript`