2011-03-16 31 views
1

我有一個IObservable可以實現爲BehaviorSubject,ReplaySubject或類似的東西。IObservable - 忽略之前的結果

在以下情況下,我不希望訂閱服務器獲取最後一次緩存的值,而是希望獲取下一個值。有任何想法嗎?

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

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

subject.OnNext(3); 

注意,我想打印的數量爲3 ...我猜,我需要把的「subject.Subscribe」之間的反應擴展方法之一,得到一個新的觀察或東西。

+0

所以,你希望能夠得到熱或冷的觀測,並讓他們都表現得好像他們是熱?或者它只是你想忽略的*最後*結果? – Gabe 2011-03-16 20:13:31

回答

0

在您的特定片段中,您可以使用常規主題並獲得所需內容。或者對於通用冷觀察,您可能想要someSubject.Publish().RefCount()

+0

這個例子是非常微不足道的,問題是如果我提供了一個I = Observable碰巧是BehaviorSubject ...那就是我想要保護的東西。 – 2011-03-16 20:04:19

+1

@vdh_ant然後跳過(1)是你的朋友。 – 2011-03-17 00:36:54

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(); 
1

這應該做你想要什麼:

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

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

subject.OnNext(3);