异步,等待无法正常工作

时间:2018-11-16 15:02:44

标签: angular ionic-framework async-await

试图弄清楚为什么它不起作用以及我所缺少的东西。

在登录页面中,我正在调用服务中的功能

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 :(得分:1)

您需要使方法getToken async,并使其返回promise。更改为此:

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

答案 1 :(得分:0)

我相信这也会起作用。我发现如果可能的话,不要将async / awaitthen混合在一起。

async getToken() {
    let data = await this._currentUser.getProfile();
    console.log("retrieve token 2");
    this.token = data.token;
});