Kul*_*ngi 4 observable rxjs typescript angular angular-httpclient
我是Angular&typescript的新手,试图了解HttpClient,observables和subscribe
当我在组件的功能中执行此操作时
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 - 如何使用 - 你看到没有订阅.
可观察到的是热/冷的事实比仅仅拥有或不必订阅具有更多的后果:
在订阅时,您还应该在某些情况下取消订阅以避免内存泄漏以及Angular的异步管道,它管理您的订阅; 有一篇关于此事的文章:不要忘记取消订阅(Angular特定)
从一般观点来看,Ben Lesh就这一主题发表了一篇完美的文章:Hot vs Cold Observables(不是Angular特有的).
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |