我正在使用firebase auth,当用户登录时,我试图获取他的uid(密钥)并保存它。
这是我的代码(这里console.log(that.uid);
返回密钥):
loginWithEmail(email, password)
{
// Resolving scope problems in TypeScript
let that = this;
return this.af.auth.login(
{
email: email,
password: password
},
{
provider: AuthProviders.Password,
method: AuthMethods.Password,
}).then((user) =>
{
that.uid = user.uid;
// console.log(that.uid);
})
}
我有一个函数可以从另一个返回uid的组件调用:
getUid()
{
console.log(this.uid);
return this.uid;
}
此处console.log(this.uid);
返回'undefined'
。
为什么会这样,我该如何解决?
修改
我阅读了下面的答案,并了解问题是异步..但我没有找到解决方法如何从异步函数保存我的数据(在此示例中:用户ID)同步一个。
如果有人能为我的代码提供解决方案,我将很高兴,这样我就能理解如何修复它并使用异步和同步。
EDIT2:
getUid()函数提供了loginWithEmail(email,password)函数内部的服务。 getUid()是从另一个组件调用的,在我的例子中是HomeComponent:
export class HomeComponent implements OnInit
{
permission: number;
constructor(private afService: AF, private router: Router)
{
console.log(afService.getUid());
}
}
感谢。