在Rx.Net文献中,普遍提到一个被称为可观察对象的温度。
有冷可观察对象(例如由Observable.Interval()
和类似工厂方法创建的对象),每次创建新订阅时都会产生副作用。
另一方面,有热可观察对象(例如Subject<T>
),它们将随着新的订阅而加入。
还有温暖可观察对象,例如由RefCount()
返回的对象,每次创建订阅时将执行初始化,但仅当没有其他活动订阅时才执行。这些温暖的可观察对象的行为由Dave Sexton在此处解释:
另外,您可以调用Publish然后RefCount以获取在多个连续观察者之间共享的IObservable。请注意,这不是真正的热可观测性 - 它更像是温暖的可观测性。RefCount对基础可观测对象进行单次订阅,只要查询有至少一个观察者。当您的查询没有更多观察者时,将引用计数更改为0,基础订阅将被处理。如果稍后有另一个观察者订阅您的查询,则再次将引用计数从0更改为1,然后RefCount将对基础可观测对象进行新的订阅,从而导致订阅副作用再次发生。
还有其他应该注意的温度吗?是否可以以编程方式获取Observable的温度?