1个订阅用户可以有多个选择查询吗?
,
var obj = item.tolist().subscribe(OnNext);
var obj2 = item.where(i=>i.type=="box").subscribe(OnNext);
不确定代码是否正确。但大多数情况下是这样的。这使用2订阅。只能使用1个订阅吗?
你绝对可以为不同的可观察对象订阅相同的方法。但是,如果订阅者具有某种状态,则需要注意并发性问题,因为订阅者可能同时执行一个不同的线程。然而,这并不是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
两个投影,如果您尝试执行代码,您将看到两个流中的事件都写入控制台。