2016-08-15 12 views
0

私はHOT Observable<Integer>を返すメソッドを持っています。サブスクリプション時に値が送出され、次にIntegersのストリームが(最終的に)来ます。ホット観測可能なファーストエミッションのSwitchMap

私はこれらのうちの10個()(異なるインスタンス)を持っています。そして私は英語で書かれて、やってみたいことは次のとおりです。

  • これら10観察可能EMITのすべて0
  • Integer最初のようであれば、このロジックの背後にmergeWith Fallback set of observable

理由がありますdb(最初の10 Observable)の一部をチェックしたいのですが、dbにデータが含まれている場合は、10 Observableの最初のセットを使用してください。しかし、dbが現在これらの位置にデータ(整数0)を含んでいない場合は、データを格納する「dbのセクション」を使用します。

答えて

0

最初の要素(take(1))とフィルタ0をそれぞれの観測値から取り、アイテム数を数えます(count()を使用)。

「トリッキーな」部分は、あなたの観察可能な部分が熱くなっていることです。あなたは最初の要素が欠けていないことを忘れてはならないでしょう。

Observable.just(obs1, ob2, ..., obs10) 
       .flatMap(obs -> obs.take(1).filter(i -> i == 0)) 
       .count() 
       .filter(count -> count == 10) 
       .isEmpty() 
       .flatMap(isEmpty -> { 
         if(isEmpty) { 
          return Observable.empty(); 
         } else { 
          return fallbackObservable(); 
         } 
       }).subscribe(); 
関連する問題