【问题标题】:Hot/Cold Observable, 1 subscribers with multiple select query?Hot/Cold Observable,1 个多选查询的订阅者?
【发布时间】:2015-10-09 09:05:32
【问题描述】:

1个订阅者可以多选查询吗?

例如:

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

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

不确定代码是否正确。但大多会是这样。 这使用 2 订阅。只能使用 1 次订阅吗?

【问题讨论】:

  • 您的代码无法编译。您能否添加足够的代码以使其编译?

标签: linq system.reactive


【解决方案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 这两个预测,如果您尝试执行代码,您将看到来自两个流的事件都写入了控制台。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-27
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多