使http请求等待返回其响应

时间:2019-05-03 10:51:10

标签: typescript promise angular5 httprequest guard

我有一个返回权限的HTTP GET请求。我在isProjectLead()的auth.service.ts中使用此请求。我需要等待http请求返回该值以允许访问页面。

我该怎么做?我尝试使用Promises,但是对此了解不多。

get isProjectLead() {

  var flag = false;
  //var thisPromiseCount = ++this.promiseCount;

  var user = JSON.parse(localStorage.getItem("user"));
  if (!this.selectedProject) {
    this.selectedProject = parseInt(this.route.snapshot.paramMap.get('id'));
  }

  this.linkService.getLinksByUserAndProject(user.username, this.selectedProject).subscribe(links => {
        this.links = links;

        this.links.forEach(element => {
          if (JSON.parse(element).role.id == "2") {
            flag = true;
          }
        });
      },
        (err: any) => {
        });


  return flag;
}

1 个答案:

答案 0 :(得分:0)

将可观察者转化为应许

async isProjectLead() {

  var flag = false;
  //var thisPromiseCount = ++this.promiseCount;

  var user = JSON.parse(localStorage.getItem("user"));
  if (!this.selectedProject) {
    this.selectedProject = parseInt(this.route.snapshot.paramMap.get('id'));
  }

  try {
    var links = await this.linkService
      .getLinksByUserAndProject(user.username, this.selectedProject)
      .toPromise();
    this.links = links;

    this.links.forEach(element => {
      if (JSON.parse(element).role.id == "2") {
        flag = true;
      }
    });

  } catch (e) {
    // handle error
  }

  return flag;
}

记住点

返回响应也将是一个承诺,因此您必须等待该承诺解决。