从 IObservable 获取最新消息
Get latest message from an IObservable
我想用 rx 完成一个非常简单的任务,但我不确定如何完成它。将下面的代码视为最小示例。
var subject = new Subject<int>();
subject.OnNext(1);
subject.OnNext(2);
Assert.AreEqual(2, subject.__________());
// > what goes above <
该方法应该只公开给 IObservable
接口。有两个看起来很有用的候选人并没有像我希望的那样。 Latest
方法将阻塞直到下一条不是我正在寻找的行为的消息。 MostRecent
文档看起来很有前途,但未能实现我的期望。
没有一种方法可以做到这一点。 Observables 需要订阅(也可以采用运算符的形式)来传播值。当主题发出(或 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);
我想用 rx 完成一个非常简单的任务,但我不确定如何完成它。将下面的代码视为最小示例。
var subject = new Subject<int>();
subject.OnNext(1);
subject.OnNext(2);
Assert.AreEqual(2, subject.__________());
// > what goes above <
该方法应该只公开给 IObservable
接口。有两个看起来很有用的候选人并没有像我希望的那样。 Latest
方法将阻塞直到下一条不是我正在寻找的行为的消息。 MostRecent
文档看起来很有前途,但未能实现我的期望。
没有一种方法可以做到这一点。 Observables 需要订阅(也可以采用运算符的形式)来传播值。当主题发出(或 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);