我有一个非常简单的任务,我想用rx完成,我不知道如何实现它。考虑下面的代码作为最小示例。
var subject = new Subject<int>();
subject.OnNext(1);
subject.OnNext(2);
Assert.AreEqual(2, subject.__________());
// > what goes above <
该方法应该只暴露给IObservable
接口。有两个有用的候选人没有做我希望的事情。 Latest
方法将阻塞,直到下一条消息不是我要查找的行为。 MostRecent
文档看起来非常有前途,但未能实现我所希望的目标。
答案 0 :(得分:2)
没有一种方法可以做到这一点。 Observable需要一个订阅,它也可以采用运算符的形式来传播值。当主题发出(或OnNext
s)值时,您需要激活该订阅。没有什么可以为你缓存或存储价值。
以下是使用原始订阅的示例:
var subject = new Subject<int>();
int last = 0;
using (subject.Subscribe(i => last = i))
{
subject.OnNext(1);
subject.OnNext(2);
}
Assert.AreEqual(2, last);