在RxJS中,hot observables是使用外部生产者的可观察者,但是冷可观察者使用本地生产者(参见例如RxJS Hot vs Cold Observable by Ben Lesh)。
Angular HttpClient.post
使用冷可观察量来发送数据并在您拨打电话时重复。
Angular有什么方法可以知道特定方法是使用热观察还是冷观察?
答案 0 :(得分:7)
没有。文档是最安全的选择。另外,我不同意@ martin的评论,这绝对重要。您需要小心冷观察,以避免重新订阅和重新发布昂贵的操作(例如,通过使用多播或将结果保存到主题)。
您还必须依赖文档来了解可观察的完成时间/方式。例如,您不必担心从HttpClient.post
取消订阅,因为您知道它将在ActivatedRoute.params
永远无法完成的地方完成,因此如果您不使用某些内容,可能会产生内存泄漏例如takeUntil
或跟踪订阅。
*编辑:实际上,为了澄清,你需要小心所有的观察,而不仅仅是寒冷的观察。 Hot Observables也会产生昂贵的工作负载。
答案 1 :(得分:0)
一个 Observable 可以有两种行为:
a) 当订阅者订阅它时,订阅者会收到一组数据。要接收新数据,您需要重新订阅。
b) 当订阅者订阅它时,订阅者会持续接收数据(当数据流发生变化时)。对于接收新数据,您无需再次订阅 observable。
在 a) 的情况下,我们谈论的是 COLD Observable;
在 b) 的情况下,我们谈论的是一个 HOT Observable;