您好我需要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);
}
答案 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`