2016-06-20 5 views
1

obsOneobsTwoという2つの結果があり、それらの結果を結合してからObservable<R>を返すメソッドを呼び出します。私はObservableを2つ待ち、Observableを返すメソッドを実行します

Observables.zip(obsOne, obsTwo, (r1, r2) -> myMethodReturningObservableR(r1, r2)); 

を行おうとしましたが、私は必要なものではありませんObservable<Observable<R>>のインスタンス、になってしまいました。ドキュメントを通じてスキミング後、私はswitchOnNextを見つけ、そして今私は

Observables.switchOnNext(Observables.zip(obs1, obs2, (r1, r2) -> myMethodReturningObservableR(r1, r2)); 

を使用していますが、これは何とか右感じることはありません。

  1. この使用方法は「概念的」であり、パフォーマンスの用語で受け入れられますか? (すべての3つのオブザーバが正確に1つの値またはエラーを出力します)
  2. switchOnNext(zip(...))(またはこのシナリオで同等の他の演算子)を省略した構文や演算子がありますか?

答えて

4

だけObservable<R>を取得するには、観察をフラット化:

Observables 
    .zip(obsOne, obsTwo, (r1, r2) -> myMethodReturningObservableR(r1, r2)) 
    .flatMap(o -> o); 
関連する問題