2017-08-10 13 views
0

List<Observable<?>>があります。すべてが(空だった場合、私は.switchIfEmpty(Observable.error(RuntimeException())))を行うことができます最初の結果を観測値リストから返します。空の場合はエラーを返します。

を現在、私はこのようなものを持っている:。

Observable.fromIterable(listOfObservables) 
     .take(1) 
     .switchIfEmpty(Observable.error(RuntimeException())) 

このコード扱うだけ最初の放出された値を取得し、すべての観測が空が、ドンだった場合はエラーを返しますエラーケースを処理しません。その部分をどのように解決できるか考えてください。

+0

あなたが投稿したスニペットが問題の最初の部分を解決している場合、私はこの問題を完全に理解していません - そこには 'flatMap' /' concatMap'がないので、 _items_では、常に 'listOfObservables.get(0)' ...を発行する必要があります。 –

答えて

0

このコードは、あなたが要求し、最後まで遅延エラーとして

Observable 
    .fromIterable(listOfObservables) 
    .concatMapDelayError(i -> i) 
    .take(1) 
    .switchIfEmpty(Observable.error(new RuntimeException())) 

concatMapDelayErrorが観測順次処理するやりたいはずですので、すべての観測可能なエラーがある場合は、集約のすべての例外を除いてCompositeExceptionを取得します。

関連する問題