Rx中的IConnectableObservables

Ray*_*sen 38 .net reactive-programming system.reactive

有人可以解释Observable和ConnectableObservable之间的区别吗?Rx Extensions文档非常稀疏,我不明白ConnectableObservable在什么情况下是有用的.

此类用于Replay/Prune方法.

Ric*_*lay 61

简短回答:

IConnectableObservable表示可与多个订户共享的待定热点可观察对象.调用IConnectableObservable.Connect()导致更改为热(订阅冷源可观察)

答案很长:

冷观察到(如Observable.Range)重放每个用户的顺序.它与秒表类似,每个订户都有自己的秒表.用户通过订阅启动秒表,并且一旦观察者停止观察,秒表就停止(并重置).

一个热点观察到股所有用户之间的顺序.有一个秒表并且所有订阅者都被给予相同的时间读数,无论他们什么时候开始观看,都是类似的.

IObservable.Publish将冷可观察量转换为热可观察量,但返回一个IConnectableObservable.这使订阅者能够在启动之前订阅(单个)秒表.呼叫IConnectableObservable.Connect()启动秒表.处理Connect()返回值会停止秒表.

值得注意的是,一些可观察的来源本质上是热门的.例如,无论我们是否订阅了鼠标事件,都可以触发鼠标事件.在这种情况下,所有可连接的observable都可以共享单个事件订阅.