В моем приложении Ionic / Angular я конвертирую некоторые обещанные реализации для использования вместо них наблюдаемых. У меня возникла одна проблема с конкретной функцией. Мой исходный (рабочий, основанный на обещаниях) код выглядел так:
async getPlayerStats() {
this.user = await this.mainService.getPlayerStats(this.username);
this.checkRookieTopicCompletionStatus();
}
Как вы можете видеть, с вышеупомянутой имплантацией я жду this.user
, прежде чем позвонить this.checkRookieTopicCompletionStatus();
Это важно, потому что я использую this.user
в for-loop
в этой функции.
Теперь, в моей новой реализации на основе наблюдаемых, моя функция getPlayerStats()
выглядит так:
getPlayerStats() {
this.mainService.getPlayerStats(this.username).subscribe(
user => this.user = user,
error => this.errorMsg = error,
);
this.checkRookieTopicCompletionStatus();
}
Проблема в том, что this.checkRookieTopicCompletionStatus()
срабатывает до того, как доступно this.user
. Итак, мой вопрос: как мне изменить эту функцию выше, чтобы я был уверен, что у меня есть this.user
данные до вызова this.checkRookieTopicCompletionStatus()
? Могу ли я вызвать его откуда-то из блока subscribe()
?