Angular 6 ждут окончания подписки - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть такая функция:

getNumber(value) {
    this.myService.getApi(value).subscribe(data => {
  this.myVariable = data;
});
    }

И я вызываю эту функцию в другой функции следующим образом:

set() {
    if (this.value == 1) {
this.getNumber(firstNumber)
this.newVariable = this.myVariable;
    }
    else {
this.getNumber(secondNumber)
this.newVariabe = this.myVariable + 1;
   }
};

this.value получает от другой функции.Проблема в том, что this.newVariable пусто.Я уверен, что это потому, что подписка не завершена, прежде чем я попытаюсь получить доступ к this.Variable

Есть ли способ дождаться окончания подписки, прежде чем я что-нибудь еще сделаю?

1 Ответ

0 голосов
/ 26 февраля 2019

Просто верните Observable из getNumber и подпишитесь на него.

Вы также можете добавить канал в getNumber, чтобы он обрабатывал сохранение данных, а также возвращал Observable для подписки.

getNumber(value) {
    return this.myService.getApi(value).pipe(tap(data => {
        this.myVariable = data;
    }));
}

А в твоем наборе метод

set() {
    if (this.value == 1) {
      this.getNumber(firstNumber).subscribe(() => {
        this.newVariable = this.myVariable;
      });
    }
    else {
      this.getNumber(secondNumber).subscribe(() => {
        this.newVariabe = this.myVariable + 1;
      });
   }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...