【发布时间】:2018-03-21 09:49:01
【问题描述】:
我在我的 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 条件。我也无法在回调中返回。如何解决这个问题?
【问题讨论】:
-
记住,回调是异步的。如果您要使用回调的结果,那么您的方法“verifyLogin”是异步的。使用@samAlvin 答案,使其返回一个 Promise。
标签: angular typescript asynchronous callback firebase-authentication