3

1 番目の観測結果を使用して 2 番目の観測結果を作成し、その結果をサブスクライブする必要があります。場合によっては、3 ~ 4 層の観測結果が必要になります。これを完了するための最良のアプローチは何ですか?

4

1 に答える 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 : "+_))

ここでは、すべてのサブスクライバーがデータを受信します。

これは、特定のキーワードの Twitter フィードである Observables の Subject を持つ複雑なコードの例です。これは、複数の Observable をサブスクライブさせてから、異なる Observable でまったく異なることを並行して実行できるサブジェクトです。

于 2014-06-28T11:51:27.170 に答える