2015-10-09 35 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这两个预测,如果您尝试执行的代码,你会看到,从两个流事件写入控制台。