从IObservable中获取最新消息

本文关键字:最新消息 获取 IObservable | 更新日期: 2023-09-27 18:08:09

我有一个非常简单的任务,我想用rx完成,我不确定如何完成它。考虑下面的代码作为最小示例。

        var subject = new Subject<int>();
        subject.OnNext(1);
        subject.OnNext(2);
        Assert.AreEqual(2, subject.__________());
        //                        > what goes above < 

方法应该是只暴露给IObservable接口的东西。有两个看起来很有用的候选人并没有做我希望做的事情。Latest方法将阻塞,直到下一条消息,这不是我正在寻找的行为。MostRecent文档看起来很有希望,但未能交付我所希望的。

从IObservable中获取最新消息

没有单一的方法可以做到这一点。可观察对象需要订阅(也可以采用操作符的形式)来传播值。您需要在主题发出(或OnNext)值时订阅处于活动状态。没有任何东西可以为您缓存或存储这些值。

下面是使用原始订阅的示例:

var subject = new Subject<int>();
int last = 0;
using (subject.Subscribe(i => last = i))
{
    subject.OnNext(1);
    subject.OnNext(2);
}
Assert.AreEqual(2, last);