如果我们不订阅以角度为单位返回observable的HttpClient请求会发生什么

Kul*_*ngi 4 observable rxjs typescript angular angular-httpclient

我是Angular&typescript的新手,试图了解HttpClient,observablessubscribe

当我在组件的功能中执行此操作时

console.log(this.http.get('assets/user.json'));
Run Code Online (Sandbox Code Playgroud)

我收到一个对象,但如果我将代码更改为,则无法https://localhost:4200/assets/user.json在调试器中看到任何请求network

this.http.get('assets/userDetail.json').subscribe(data => this.user = { name:  data['name']});
Run Code Online (Sandbox Code Playgroud)

我可以看到网络请求命中了所需的URL.为什么会这样?this.http.get('assets/userDetail.json')即使我们没有订阅响应数据流,我的理解也会打到网址.

Tom*_*rga 19

要理解它的好,知道有此事观测-冷需要订阅,否则他们不会解雇,如果事情是订阅他们的热被解雇不管.

Angular的HttpClient返回一个冷Observable,因此在订阅之前它不会被触发.要确定一个observable是热还是冷,你需要检查相应的文档,参见例如HttpClient.post:

构造一个Observable,在订阅时,将导致在服务器上执行配置的POST请求.

Angular的热观察的一个例子是例如ActivatedRoute.params - 如何使用 - 你看到没有订阅.

可观察到的是热/冷的事实比仅仅拥有或不必订阅具有更多的后果:

  • 真正完整的答案,+1 (2认同)