асинхронно, жду не работает как ожидалось - PullRequest
0 голосов
/ 16 ноября 2018

Попытка выяснить, почему это не работает и чего мне не хватает.

С целевой страницы я звоню, чтобы активировать услугу

this.comms.updateAccessedState();

Внутренний сервис

 async updateAccessedState() {
   console.log("get this token 1");
   await this.getToken();
   console.log(`3 ${this.token}`);
 }

и

getToken() {
this._currentUser.getProfile().then((data) => {
  console.log("retrieve token 2");
  this.token = data.token;
});

При выводе на консоль

я получаю get token => 1 3 undefined retrieving token => 2

почему функция не ожидалась

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я верю, что это тоже сработает.Мне проще не смешивать async / await с then, если это возможно.

async getToken() {
    let data = await this._currentUser.getProfile();
    console.log("retrieve token 2");
    this.token = data.token;
});
0 голосов
/ 16 ноября 2018

Вам нужно сделать метод getToken async и заставить его вернуть обещание.Измените это на это:

async getToken(): Promise<any> {
    return this._currentUser.getProfile().then((data) => {
      console.log("retrieve token 2");
      this.token = data.token;
    });
...