如何先从firebase获取结果然后重定向到另一个页面?

时间:2016-01-21 11:19:54

标签: javascript jquery firebase

我在我的应用程序中有一个函数从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";
    })

1 个答案:

答案 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()时,它会向服务器发起请求。但是,由于可能需要一段时间才能从服务器返回响应,因此您的浏览器不会等待答案,只需继续查询后的代码即可。当数据从服务器返回时,将调用您的回调。