gpt4 book ai didi

angular - 如果我们不订阅以 Angular 返回可观察对象的 HttpClient 请求,会发生什么

转载 作者:太空狗 更新时间:2023-10-29 18:03:15 24 4
gpt4 key购买 nike

我是 Angular 和 typescript 的新手,正在尝试了解 HttpClientobservablessubscribe

当我在组件的函数中执行此操作时

console.log(this.http.get('assets/user.json'));

我正在接收一个对象,但在调试器 network 中看不到任何发送到 https://localhost:4200/assets/user.json 的请求,而如果我更改代码为

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

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

最佳答案

要理解这个问题,最好知道有hotcold observables——冷的需要订阅,否则它们不会被解雇,热的会被解雇 no是否订阅了它们很重要。

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

Constructs an Observable which, when subscribed, will cause the configured POST request to be executed on the server.

Angular 的热可观察对象的一个​​例子是例如ActivatedRoute.params - how to use - 你看到没有订阅。

一个可观察对象是热/冷的事实比仅仅有或没有订阅有更多的后果:

关于angular - 如果我们不订阅以 Angular 返回可观察对象的 HttpClient 请求,会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com