我在angular2应用程序中使用firebase进行身份验证,我遇到了回调问题 . 这是我的代码段,用于标识用户是否已登录 .
verifyLogin(url: string): boolean {
var myUser = null;
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
myUser = user;
console.log("sdfsdfsd");
console.log(myUser);
} else {
// No user is signed in.
}
});
console.log("check");
console.log(myUser);
if(myUser){
return true;
}
console.log(myUser);
this.router.navigate(['/admin/signin']);
return false;
}
如果用户已登录,则此verifyLogin函数将返回true,否则返回false . 但问题是底部部分包含if条件在执行回调之前执行 . 我也无法返回回调内部 . 如何解决这个问题?
1 回答
解决此问题的一种方法是使
verifyLogin()
返回Promise . 这样,verifyLogin()
只会在onAuthStateChanged()
完成后返回true
或false
.然后你可以像这样调用
verifyLogin()
: