2017-12-25 21 views
0

Rxjava zip演算子を使用するケースがある場合は、4つの異なるネットワーク呼び出しをzipします。 は、例えば:エラー処理は、このエラーを引き起こすことどの観測を知ることに依存している場合トレースの指定Rxjava zip演算子を使用しているときに観測可能なエラー

Observable.zip(networkCall1, networkCall2, networkCall3, networkCall4), 
(model1, model2, model3, model4) -> 
Mapper.getResult(model1, model2, model3, model4)).subscribe(result -> { 
//do some work 
}); 

は今、どのように私は、エラーをスローした観察可能な特定を知っている可能性があります。ストリームを壊すことなくそのようなことを知るためのRxの方法はありますか?

答えて

3

エラーが発生した観測対象を知るには、各観測対象に注釈を付ける必要があります。

Observable.zip(
networkCall1 
    .onErrorResumeNext(error -> Observable.error(new IllegalStateException("stream1", error))), 
networkCall2 
    .onErrorResumeNext(error -> Observable.error(new IllegalStateException("stream2", error))), 
networkCall3 
    .onErrorResumeNext(error -> Observable.error(new IllegalStateException("stream3", error))), 
networkCall4 
    .onErrorResumeNext(error -> Observable.error(new IllegalStateException("stream4", error)))), 
(model1, model2, model3, model4) -> 
Mapper.getResult(model1, model2, model3, model4)).subscribe(result -> { 
//do some work 
}); 

次に、あなたのエラーハンドラでは、ストリーム名と元のエラーをアンラップ、IllegalStateExceptionを扱います。

+0

これは良い答えです、ありがとう...他の提案を待っています –

関連する問題