我需要使用第一个 observable 结果来创建第二个 observable 并订阅它的结果,有时它需要 3 到 4 层 observables。完成此任务的最佳方法是什么?
问问题
911 次
1 回答
3
如果您只是简单地将它们链接起来并使用第 4 个 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,即Subject。
val s = new Subject()
s.onNext("I am a value")
...
s.subscribe(println("first print : "+_))
s.subscribe(println("second print : "+_))
在这里,所有订阅者都将收到数据。
这是一个复杂代码的示例,其中您有一个 Observables 主题,它是特定关键字的 Twitter 提要。这是一个 Subject 让多个 Observable 订阅它,然后在不同的 Observable 中并行执行完全不同的事情。
于 2014-06-28T11:51:27.170 回答