等待方法完成后再调用它

时间:2020-02-11 07:03:57

标签: angular

我遇到一个问题,即我正在调用的方法无法及时提供值。这是我的代码。

  getStoredData(): StorageModel {
    const data =  JSON.parse(sessionStorage.getItem(`oidc.user:${environment.accessTokenApiUrl}:${environment.clientId}`));
    return data;
  }

  isAuthenticated() {
    if (this._storeService.getStoredData()) {
      if (
        this._storeService.getStoredData().id_token &&
        this._storeService.getStoredData().profile.role
      ) {
        return true;
      } else {
        return false;
      }
    }
    return false;
  }



  ngOnInit() {
    if(this.authService.isAuthenticated()){
      //do something
    } else {
      //do something else
    }
  }

isAuthenticated返回null,但在几秒钟后得到一个值。但是,因为它被称为onInit,所以它会调用该方法,并且那时没有任何值。

如何等待返回值?

1 个答案:

答案 0 :(得分:0)

您可以使用javascript的异步等待功能。
每当您提到一个异步任务时,主线程上的程序执行将被停止,直到任务完成为止。

async getStoredData(): StorageModel {
  const dataObj = await sessionStorage.getItem(`oidc.user:${environment.accessTokenApiUrl}:${environment.clientId}`);
  const data =  JSON.parse(dataObj);
  return data;
}

您可能还需要对isAuthenticated方法执行相同的操作。