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

Bry*_*son 13 system.reactive

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

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

类似的问题:如何在订阅时获得最新值的IObservable?这是一个非常相似的问题,但它是从一年多前开始的,并且已经对Rx做了很多补充,所以我认为现在可能有一个内置函数而不是必须依赖于BehaviorSubject所以我不认为这是完全相同的.

编辑: 这是我实际上要做的事情.我正在谈论的实际可观察​​序列下面有一条评论.

Lee*_*ell 8

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

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

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