热 Observables 和冷 Observables

本人愚见,我更建议把这个作为序列的属性而不是独立的类型,因为他们表示的抽象概念完美相符,Observable 序列。

这是来自 ReactiveX.io 的定义

一个 Observable 什么时候开始发生它序列的元素?这依靠 Observable。一个“热的” Observable 一旦创建完了就会发射元素,所以那些之后订阅 Observable 的观察者可以在过程中间开始观察序列。一个“冷的” Observable,直到一个观察者订阅了它之后才开始发射它的元素,并且观察者能被保证看到整个从到开始的序列。

热 Observables 冷 Observables
… 是序列 … 是序列
使用资源(“产生热”)不管是否有观察者订阅。 不使用资源(不产生热)直到有观察者订阅。
变量 / 属性 / 常亮, 点击坐标, 鼠标坐标, UI控制值, 当前时间 异步操作, HTTP 连接, TCP 连接, 流
通常包含 ~ N 元素 通常包含 ~ 1 元素
不管是否观察者订阅都产生序列元素。 当且仅当被观察者订阅才产生元素。
序列计算资源通常分享于所有订阅了的观察者之间。 序列计算资源通常被单独分配给每一个订阅了的观察者。
通常有状态 通常无状态