问题描述
tl; dr:执行await oktaAuthService.login('/');
后,下一条指令将被跳过。
import {Injectable} from '@angular/core';
import {OktaAuthService} from '@okta/okta-angular';
@Injectable({
providedIn: 'root'
})
export class AuthService {
this.user = undefined;
constructor(private oktaAuthService: OktaAuthService,private bkndSrv: BackendService) {}
async login() {
await this.oktaAuthService.login('/');
// the next 2 lines are not being executing!
this.user = await this.oktaAuth.getUser();
console.log("user: ",this.user);
}
当我调用login()
函数时,我被重定向到okta登录页面,并且成功地被令牌重定向回了我。但是,我看不到屏幕上的日志,即使登录功能完成后,this.user
仍未定义。
任何帮助将不胜感激!
解决方法
好吧,重构为.then
表示法做到了。即
login() {
this. oktaAuthService.login('/').then(() => {
this. oktaAuthService.getUser().then((user) => {
this.user = user;
console.log('user: ',this.user);
});
});
}
但是,如果有人知道如何使用异步等待,请分享!