有人可以解释Observable和ConnectableObservable之间的区别吗? Rx扩展文档非常稀少,我不明白ConnectableObservable在什么情况下是有用的。Rx中的IConnectableObservables
这个类用于Replay/Prune方法。
有人可以解释Observable和ConnectableObservable之间的区别吗? Rx扩展文档非常稀少,我不明白ConnectableObservable在什么情况下是有用的。Rx中的IConnectableObservables
这个类用于Replay/Prune方法。
短的答案:
IConnectableObservable
表示未决热可观察到的,可与多个订户共享。调用IConnectableObservable.Connect()
导致改变热(订阅了冷源可观察)
龙答:
一个冷观察到(如Observable.Range
)重放每个用户的序列。秒表,每个用户都有自己的秒表。订阅者通过订阅来启动秒表,并且一旦观察者停止观察,秒表停止(并重置)。
A 热可观察共享所有订户之间的序列。无论何时开始观看,只有一个秒表,所有用户都可以获得同样的时间读数。
IObservable.Publish
将冷观察转换为热观察,但返回IConnectableObservable
。这使用户可以在开始之前预订(单个)秒表。拨打IConnectableObservable.Connect()
开始秒表。处理返回值Connect()
会停止秒表。
值得注意的是,一些可观察的来源本质上是热点。例如,无论我们是否订阅了它们,鼠标事件都会触发。在这种情况下,所有可连接的可观察事件都是共享单个事件订阅。