热与冷可观测量

时间:2017-09-06 15:50:51

标签: angular rxjs angular-httpclient

在RxJS中,hot observables是使用外部生产者的可观察者,但是冷可观察者使用本地生产者(参见例如RxJS Hot vs Cold Observable by Ben Lesh)。

Angular HttpClient.post使用冷可观察量来发送数据并在您拨打电话时重复。

Angular有什么方法可以知道特定方法是使用热观察还是冷观察?

2 个答案:

答案 0 :(得分:7)

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

您还必须依赖文档来了解可观察的完成时间/方式。例如,您不必担心从HttpClient.post取消订阅,因为您知道它将在ActivatedRoute.params永远无法完成的地方完成,因此如果您不使用某些内容,可能会产生内存泄漏例如takeUntil或跟踪订阅。

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

答案 1 :(得分:0)

一个 Observable 可以有两种行为:

a) 当订阅者订阅它时,订阅者会收到一组数据。要接收新数据,您需要重新订阅。

b) 当订阅者订阅它时,订阅者会持续接收数据(当数据流发生变化时)。对于接收新数据,您无需再次订阅 observable。

在 a) 的情况下,我们谈论的是 COLD Observable;

在 b) 的情况下,我们谈论的是一个 HOT Observable;

check this article