如何处理来自api响应的数据然后以角度同步返回布尔值?

问题描述

我的服务中有一个简单的函数:

  /**
   * Funtion to check if the user logged in has admin rights
   */
  isAdmin(user_id: string) {
    var adminTemp: boolean;
    this.httpClient
        .get(`${this.urk}/${user_id}`)
        .subscribe((data: any) => {
          if (data.includes('Admin')) {
            adminTemp = true;
          } else {
            adminTemp = false;
          }
        });
    return adminTemp;
  }

此函数在 canActivate 函数中调用,该函数需要一个 bool 值来确定用户是否为管理员。

canActivate(
    next: ActivatedRouteSnapshot,state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
    if(this.loginService.isAdmin('123')){
      return true;
    }
    else{
      return this.router.parseUrl("/admin/logout");
    }
  }

问题在于,在进行 api 调用之前,它取值为 undefined 并将用户标记为非管理员。我理解发生这种情况是因为 subscribe 本身是一个异步调用。我找不到任何其他方法来弄清楚如何执行此操作,因为必须先处理 api 响应,然后才能知道它们是否是用户,否则我会使用简单的 return 语句。我应该如何进行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)