1个订阅者可以使用多个选择查询吗?
例如:
var obj = item.tolist().subscribe(OnNext);
var obj2 = item.where(i=>i.type=="box").subscribe(OnNext);
不确定代码是否正确。但大多数都是这样的。 这使用2订阅。它只能使用1个订阅吗?
答案 0 :(得分:1)
你绝对可以为不同的observable订阅相同的方法。但是,如果订户具有某种状态,那么您需要了解并发问题,因为订户可能同时执行一个不同的线程。但是,这不是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
,如果您尝试执行代码,您将看到来自两个流的事件都被写入控制台。