IObservable - 忽略先前的结果

时间:2011-03-16 19:43:45

标签: c# .net system.reactive

我有一个IObservable可以实现为BehaviorSubject,ReplaySubject或类似的东西。

在以下场景中,我不希望订阅者获取最后一个缓存值,而是希望它获取下一个值来获取。有什么想法吗?

var subject = new BehaviorSubject(1);
subject.OnNext(2);

subject.Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);

请注意,我要打印的数字是3 ...我猜我需要在“subject.Subscribe”之间添加一个反应式扩展方法来获取新的observable或其他东西。

3 个答案:

答案 0 :(得分:1)

这应该做你想要的:

var subject = new BehaviorSubject(1);
subject.OnNext(2);

subject
       .Skip(1) // 
       .Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);

答案 1 :(得分:0)

在您的特定代码段中,您可以使用常规主题并获得所需内容。或者对于通用的冷Observable,您可能需要someSubject.Publish().RefCount()

答案 2 :(得分:0)

这是否适合你呢?

var subject = new BehaviorSubject<int>(1);

subject.OnNext(2);

var co = subject.Publish();

co.Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);

co.Connect();