2017-09-06 41 views
4

RxJS热观测值是使用外部生产者的观测值,但冷观测值使用本地生产者(见例如RxJS Hot vs Cold Observable by Ben Lesh)。热点与冷点观测角度

角度​​使用冷观察数据发送数据并在您拨打电话时重复。

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

+0

[冷或热http请求之间的区别?](https://stackoverflow.com/questions/42815886/difference-between-cold-or-hot-http-requests) – jonrsharpe

+3

我可不这么认为我相信在实践中说实话并不重要。只要按照常识:)。例如,如你所说'HttpClient.post'很冷,但['ActivatedRoute.params'](https://angular.io/api/router/ActivatedRoute)是一个热门的Observable,它是有意义的(它是一个Subject内部的实例即使你没有订阅它也需要存在)。 – martin

回答

5

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

您还必须依靠文档来了解observable何时/如何完成。例如,您不必担心从​​取消订阅,因为您知道它将完成,因此ActivatedRoute.params永远不会完成,因此如果您不使用takeUntil之类的内容或跟踪订阅,则可能会产生内存泄漏。

*编辑:其实,澄清,你需要小心所有observables,不只是冷观察。热观测值也会产生昂贵的工作负载。