Angular - 异步调用

时间:2017-07-07 13:20:26

标签: angular typescript asynchronous

在我的应用中,我正在拨打服务:

getEnv(): Promise<string>{
        return this.http.get(this.url + 'Home/GetEnv')
        .toPromise()
        .then(response => response.json().environment)
        .catch(this.handleError);
    }

返回组件

getEnvironnement(): string {

      this.appService.getEnv().then(url => {
          this.url = url;
      })  

      return this.url;
  }

问题如下。当我调用MyComponent.getEnvironnement()时,结果为undefined,因为对我的服务的调用是异步的,我知道所有这些内容。但是..有没有办法在返回this.url之前等待?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用async-await以顺序方式编写代码,同时仍保留非阻塞异步HTTP请求的好处:

async getEnvironnement(): Promise<string> {
  this.url = await this.appService.getEnv();
  return this.url;
}