如何在订阅时提供热点可观察的最新值

时间:2011-12-10 23:22:34

标签: system.reactive

我有一个热门的观察者(来自一个事件),我正在调用DistinctUntilChanged,其中将有多个订阅者,他们将在observable开始运行后的不同时间订阅并生成其第一个值。订阅者将通过我班级的财产获得IObservable

我如何做到这一点,以便每次有人订阅观察者时,他们会获得最后发布的值,但是观察到的正常情况呢?我想我可能正在寻找PublishLast,但我不确定它是否有其他副作用。

类似问题How do I get an IObservable to push the newest value upon subscription?这是一个非常相似的问题,但它是从一年多前开始的,并且已经对Rx做了很多补充,所以我认为现在可能有一个内置函数而不是必须依赖BehaviorSubject所以我不要我认为这完全是重复的。

编辑: Here is我实际上要做的事情。在我正在讨论的实际可观察​​序列下面有一条评论。

1 个答案:

答案 0 :(得分:8)

另一个答案很接近。你想要一个ReplaySubject(1),即只重播1个值;或者你想要一个BehaviorSubject。区别在于行为主体将需要默认值。这也将保证订户将始终立即获得价值。

var replay1 = source.Replay(1);
replay1.Connect();
//Or
var alwaysHaveValue = source.Multicast(new BehaviorSubject<int>(-1));

要了解每个主题,请查看我的Intro to Rx帖子