2015-10-09 38 views
1

Can 1 Subscriber with multiple select query?熱/冷可觀察,1個訂戶與多個選擇查詢?

如:

var obj = item.tolist().subscribe(OnNext); 

var obj2 = item.where(i=>i.type=="box").subscribe(OnNext); 

不知道該代碼正確與否。但大多會是這樣的。 這使用2訂閱。它只能使用1訂閱嗎?

+0

您的代碼不能編譯。你可以添加足夠的代碼來編譯它嗎? – Enigmativity

回答

1

你絕對可以訂閱相同的方法不同的observables。但是,如果訂戶有某種狀態,則需要注意併發問題,因爲訂戶可能同時執行一個不同的線程。但是,這不是Rx特有的問題,使用Rx將幫助您避免共享狀態。

這裏是一個工作示例:

var observable = Observable.Interval(TimeSpan.FromSeconds(0.2)).Take(10); 

var projectionA = observable 
    .Where(i => i % 2 == 0) 
    .Select(i => Tuple.Create("A", i)); 
var projectionB = observable 
    .Select(i => Tuple.Create("B", i)); 

projectionA.Subscribe(Console.WriteLine); 
projectionB.Subscribe(Console.WriteLine); 

我訂閱Console.WriteLine這兩個預測,如果您嘗試執行的代碼,你會看到,從兩個流事件寫入控制檯。