当我不想进行异步调用时,为什么我不能使用Angular5中的HTTP GET同步获取数据

时间:2018-03-23 07:51:47

标签: angular http asynchronous observable

假设我使用observable在Angular 5应用程序中观察HTTP GET方法,并且我有一个对象fetchedData,用于存储从此检索到的数据方法。

如果我不知道GET什么时候完成,我需要在下一次操作中使用它的值,那么异步获取数据有什么意义呢? / p>

如果要执行的代码不依赖于异步提取的数据,那么异步检索是否有用(如果是这样,Angular会从独立代码中识别依赖于提取的数据代码) ?

因此,有没有办法在Angular 5中使用HTTP请求同步获取数据?

1 个答案:

答案 0 :(得分:0)

this.somePromiseReturningCall().then()如果你使用Promise对象可以工作。但我建议反对它,它阻止整个网页,直到你得到答复。

但是创建一个布尔对象会更好,它会阻止受影响的用户视图。

例如你有一个

isPageReady = false;

变量。 然后在html:

<div [disabled]="!isPageReady"> .... </div>

(或者您可以隐藏它,或使用&#34;加载...&#34;标签等在其上创建叠加层)

然后在你的数据库电话中:

   this.httpClient
      .get(<params>)
      .subscribe(response => {
       <process the response>
       this.isPageReady = true;
    });
  }