我回顾了以下 SO 问题: 什么是冷热观测值?
总结一下:
- 一个冷的可观察对象在它有一个观察者来消费它们时发出它的值,即观察者接收到的值的序列与订阅时间无关。所有观察者都将使用相同的值序列。
- hot observable 独立于其订阅发出值,即观察者接收到的值是订阅时间的函数。
然而,我觉得热与冷仍然是混乱的根源。所以这是我的问题:
默认情况下所有 rx 可观察对象都是冷的(主题除外)吗?
我经常读到事件是热可观察对象的典型隐喻,但我也读到这
Rx.fromEvent(input, 'click')
是冷可观察对象(?)。是否有/什么是 Rx 操作符将冷的 observables 变成热的 observables(除了
publish
, 和share
)?例如,它如何与 Rx 运算符一起使用
withLatestFrom
?让我们cold$
成为一个冷的 observable,它已经在某个地方被订阅了。会sth$.withLatestFrom(cold$,...)
成为热点观察者吗?或者如果我
sth1$.withLatestFrom(cold$,...), sth2$.withLatestFrom(cold$,...)
订阅并订阅sth1
andsth2
,我会看到两者的值相同sth
吗?我认为
Rx.fromEvent
会产生冷的可观察量,但事实并非如此,正如其中一个答案中提到的那样。但是,我仍然对这种行为感到困惑:https ://codepen.io/anon/pen/NqQMJR?editors=101 。不同的订阅从同一个 observable 获得不同的值。活动不是click
共享的吗?