- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我理解热和冷可观察量之间的区别,但我总是看到人们使用热可观察量而不是冷;事实上,如果有人不小心使用了一个冷的 Observable,就会被认为是一个错误,因为它通常是导致不良行为的原因。
在什么情况下您更喜欢或使用冷 Observable 而不是热 Observable?
最佳答案
首先请大家点评Hot and Cold observables : are there 'hot' and 'cold' operators?以确保您对热与冷有透彻的了解。
Cold observables 允许生产者懒惰,这是一个非常理想的特性。在没有使用这些值(value)(没有消费者)的情况下产生值(value)(生产可能很昂贵)是一种浪费。由于这种冷可观察量是构建 block ......更经常地派生出热可观察量。
因此,冷可观察量最常见的用例是懒惰地派生热可观察量。如果您考虑一下,您需要以某种方式以编程方式构建这些热可观察量。一种方法是使用主题(然后您就是制作人)。另一种方法是通过运算符从其他预先存在的 observables 派生它们,预先存在的 observables 也从其他人派生等等。在链的末尾,你应该找到 Rx.Observable.create
,那就是一个冷的 Observable。
当您需要惰性时(仅当有消费者时才开始生产值,或控制生产过程的开始),您可以使用冷观察。例如,defer
允许您仅在有消费者时启动生产者。例如,当您有一个热门的可观察对象但您还没有准备好收听它时,可以使用它。
当您需要重现一个产生值(value)的过程时,您还需要冷可观察对象(每个新订阅者都将重新启动完全相同的过程)。例如,出于测试目的,您希望多次使用完全相同的序列,但在不同的时间针对不同的消费者。
最后,这个问题听起来更像是一个哲学问题。您有两种工具可供使用,重要的是了解您需要什么、您拥有什么以及适合您的用例。
关于javascript - 冷可观察量的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36968402/
我是一名优秀的程序员,十分优秀!