Javascript 如何让if语句等待get请求完成(保护)呢

Javascript 如何让if语句等待get请求完成(保护)呢,javascript,angular,routing,Javascript,Angular,Routing,我想为我的angular应用程序创建管理路由。我在angular中创建了一个角色守卫。请参阅下面的代码 现在,我希望在if语句开始检查用户是否是管理员之前完成get请求。有办法做到这一点吗 export class RoleGuardGuard implements CanActivate { public user; constructor( private apiService: ApiService ) {} canActivate( next: Activate

我想为我的angular应用程序创建管理路由。我在angular中创建了一个角色守卫。请参阅下面的代码

现在,我希望在if语句开始检查用户是否是管理员之前完成get请求。有办法做到这一点吗

export class RoleGuardGuard implements CanActivate {

  public user;

  constructor( private apiService: ApiService ) {}

  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {

      this.apiService.getUserAdminData().subscribe((data)=>{
        this.user = data;
      });

      if (this.user.user_role === 'admin') {
        return true;
      } else {
        return false;
      }
  }

导出类RoleGuardGuard实现CanActivate{
公共用户;
构造函数(私有apiService:apiService){}
激活(
下一步:ActivatedRouteSnapshot,
状态:RouterStateSnashot):可观察的|承诺|布尔| UrlTree{
this.apiService.getUserAdminData().subscribe((数据)=>{
这个用户=数据;
});
if(this.user.user_角色==='admin'){
返回true;
}否则{
返回false;
}
}

不要订阅,返回一个可观察的。类似

return this.apiService.getUserAdminData().pipe(
    tap(user => this.user = user),
    map(user => user.user_role === 'admin')
);

不要订阅,返回一个可观察的

return this.apiService.getUserAdminData().pipe(
    tap(user => this.user = user),
    map(user => user.user_role === 'admin')
);