Hot 和 Cold Observables

文章目录

原文: Hot and Cold Observables

恕我直言,我建议更多地将其视为序列的属性,而不是单独的类型,因为它们由完全适合它们的相同抽象表示,即可观察序列。

这是ReactiveX.io的定义:

Observable何时开始发出其项目序列?这取决于 Observable.
“hot” Observable 对象可能会在创建后立即开始发射项目,因此以后订阅该 Observable 对象的任何观察者都可以开始观察中间位置的序列。
“cold”Observable对象要等到观察者订阅它,然后才能开始发射项目,因此可以保证这样的观察者从一开始就可以看到整个序列。

Hot ObservablesCold observables
… are sequences… are sequences
Use resources (“produce heat”) no matter if there is any observer subscribed.Don’t use resources (don’t produce heat) until observer subscribes.
Variables / properties / constants, tap coordinates, mouse coordinates, UI control values, current timeAsync operations, HTTP Connections, TCP connections, streams
Usually contains ~ N elementsUsually contains ~ 1 element
Sequence elements are produced no matter if there is any observer subscribed.Sequence elements are produced only if there is a subscribed observer.
Observable Sequence 被多个订阅它的 observers 共享每个订阅的 observer 都会有一个 Observable Sequence
Usually statefulUsually stateless