我遇到一个问题,即我正在调用的方法无法及时提供值。这是我的代码。
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,所以它会调用该方法,并且那时没有任何值。
如何等待返回值?
答案 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方法执行相同的操作。