Возвращаемое значение из подписки (ionic / angular) - PullRequest
0 голосов
/ 26 апреля 2020

Итак, я хочу вернуть значение из подписки:

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» в другой функции, но данные «undefined»:

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

Я просто нахожу другую тему на этом форуме здесь , но я не понимаю наблюдаемого пути.

Не могли бы вы объяснить мне, как вернуть эти данные для следующих функций.

Спасибо (и извините за мой английский sh)!

1 Ответ

0 голосов
/ 26 апреля 2020

Мое лучшее предположение заключается в том, что ваша проблема в том, что наблюдаемые являются асинхронными, поэтому this.uid возвращает undefined, если example() сработает до того, как ваша подписка на this.afAuth.authState вернет какое-либо значение.

Самое простое Что вы можете сделать, это позвонить по номеру example() из самой подписки. Примерно так должно работать:

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