得到' undefined'在范围结束后

时间:2017-05-17 16:15:10

标签: javascript angular

我正在使用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());
  }
}

感谢。

0 个答案:

没有答案