【问题标题】:Several observables chain together to accomplish几个 observables 链在一起完成
【发布时间】:2014-06-29 04:46:42
【问题描述】:

我需要使用第一个 observable 结果来创建第二个 observable 并订阅它的结果,有时它需要 3 到 4 层 observables。完成此任务的最佳方法是什么?

【问题讨论】:

    标签: rx-java


    【解决方案1】:

    如果你只是简单地将它们链接起来并使用第四个 Observable 作为结果,你可以直接使用这些对象,一切都会正常工作(假设你在这里使用的是 Scala):

    val obs1 = Observable.interval(1 second)
    val obs2 = obs1.map(_*2)
    obs2.subscribe(println(_))
    

    另一方面,如果 obs1 是一个数据馈送并且您需要多个单独的订阅,这将不起作用,因为所有数据都将被第一个订阅消耗。所以这段代码会做同样的事情:

    val obs1 = Observable.interval(1 second)
    val obs2 = obs1.map(_*2)
    obs2.subscribe(println(_))
    obs2.subscribe(println("I am never executed !"))
    

    在这种情况下,您必须将这个(冷)Observable 转换为热 Observable,即。 e. Subject

    val s = new Subject()
    s.onNext("I am a value")
    ...
    s.subscribe(println("first print : "+_))
    s.subscribe(println("second print : "+_))
    

    这里所有订阅者都会收到数据。

    Here is an example 的复杂代码,其中您有一个 Observables 主题,这些主题是特定关键字的 Twitter 提要。这是一个 Subject 让多个 Observable 订阅它,然后在不同的 Observable 中并行执行完全不同的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-22
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      相关资源
      最近更新 更多