首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >热与冷观测

热与冷观测
EN

Stack Overflow用户
提问于 2017-09-06 15:50:50
回答 2查看 4.3K关注 0票数 10

在RxJS中,热观测是使用外部生产者的可观测性,而冷可观测的是使用本地生产者(参见本·莱什观察到的RxJS热与冷)。

无论何时打电话,HttpClient.post都会使用冷观测值发送数据和重复。

有什么方法可以从角度上判断某一特定方法是否使用了可观察到的热或冷?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-06 20:01:44

不是的。文档是最安全的选择。此外,我不同意@martin的评论,这是绝对重要的。您需要小心使用可观察到的冷值,以避免重新订阅和重新发布昂贵的操作(例如,使用多播或将结果保存到主题上)。

您还必须依赖于文档才能知道可观察性何时/如何完成。例如,您不需要担心从HttpClient.post取消订阅,因为您知道它将完成。但是,如果您在HttpClient周围使用某种包装器(它通过缓存的主题为请求提供服务),则可能不再完成。每个组件都将生成一个新的订阅,并且在该组件被销毁后,该订阅将是主题对该组件的引用,因此该组件不会被垃圾收集,最终会导致内存泄漏。

没有办法以编程的方式知道您订阅了哪种可观察到的内容,它是否会完成。

一般来说,这是通过聪明地完成可观察性和使用像takeUntilSubscription这样的工具来清除对长期运行、未完成的可观察性或昂贵的可观察工作负载的订阅来实现的。

*编辑:实际上,为了澄清,你需要小心所有的观察,而不仅仅是寒冷的观察。热观测值也会产生昂贵的工作负荷。

*EDIT2 2:更新示例删除ActivatedRoute,因为这些可观察到的内容在组件被销毁时已经完成。

票数 10
EN

Stack Overflow用户

发布于 2021-01-17 19:27:05

一个可观察的人可以有两种行为:

a)当用户订阅它时,该用户接收一组数据。为了接收新的数据,您需要再次订阅它。

b)当用户订阅它时,用户不断地接收数据(当数据流发生变化时)。为了接收新的数据,您不需要再次订阅可观察到的数据。

在这种情况下,我们谈论的是一个冷酷的观察者;

在第二种情况下,我们说的是一个热的可观察的;

检查这篇文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46079534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档