订阅的返回值(离子/角)

时间:2020-04-26 10:13:20

标签: angular ionic-framework return observable subscribe

所以我想从订阅中返回一个值:

export class UserHomePage implements OnInit {     
    uid: string;
    ...

constructor(
    private afAuth: AngularFireAuth,
    private afs: AngularFireStore,
    ...
) {}

getAuth() {
    return this.afAuth.authState.subscribe(auth => {            <= // It's ok
    this.uid = auth.uid;
    console.log('ID : ' + this.uid);
 });
}

我尝试在其他函数中使用“ this.uid”,但数据为“未定义”:

example() {                                                     <= // Problem !
    console.log(this.uid);
}

我只是在这个论坛here上找到了另一个主题,但我不明白这种可观察的方式。

您能告诉我如何为下一个函数返回此数据。

谢谢(对不起我的英语)!

1 个答案:

答案 0 :(得分:0)

我的最佳猜测是,这里的问题是可观察值是异步的,因此,如果在您对this.uid的订阅返回任何值之前触发了undefined,则example()返回this.afAuth.authState

最简单的操作是从订阅本身调用example()。这样的事情应该起作用:

getAuth() {
  this.afAuth.authState.subscribe(auth => {
    this.uid = auth.uid;
    this.example();
  });
}