我在我的应用程序中有一个函数从firebase获取一些数据,并在完成该firebase函数后,我需要将它重定向到另一个页面。 但是在我的代码中,当我按下按钮时,它会快速重定向到另一个按钮,因此不会处理该功能。我怎么能这样做?
$('#pg-myb-inde #testBtn').on('click',function(){
myFirebaseRef.orderByChild('emailid').equalTo('mishan@gmail.com').on('value',function(userSnap){
var user=userSnap.val();
// $('#UserPage .person-name').empty();
// $('#UserPage .person-name').append('' +
// '<i class="glyphicon glyphicon-th-list"></i> '+user.fname);
console.log('appended');
console.log(user.fname);
});
location.href = "/another-web-page";
})
答案 0 :(得分:0)
这是你要找的吗?
$('#pg-myb-inde #testBtn').on('click',function(){
var query = myFirebaseRef.orderByChild('emailid').equalTo('mishan@gmail.com');
query.on('value',function(userSnap){
var user=userSnap.val();
location.href = "/another-web-page";
});
})
我唯一改变的是将位置的设置移动到回调函数中。
如果确实如此,如果您在此代码中添加一些日志语句,则可能会有所帮助:
$('#pg-myb-inde #testBtn').on('click',function(){
var query = myFirebaseRef.orderByChild('emailid').equalTo('mishan@gmail.com');
console.log('Before Firebase query');
query.on('value',function(userSnap){
console.log('In Firebase callback');
var user=userSnap.val();
location.href = "/another-web-page";
});
console.log('After Firebase query');
})
现在,当您运行此代码时,输出很可能不您所期望的内容:
Before Firebase query
After Firebase query
In Firebase callback
原因是从Firebase异步检索数据。当您致电on()
时,它会向服务器发起请求。但是,由于可能需要一段时间才能从服务器返回响应,因此您的浏览器不会等待答案,只需继续查询后的代码即可。当数据从服务器返回时,将调用您的回调。