跟踪specifec zipped使用Rxjava zip运算符时出现Observable错误

问题描述 投票:0回答:1

如果我有一个案例,我使用Rxjava zip运算符,让我们说它拉链4个不同的网络调用。例如:

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

现在,如果错误处理依赖于知道导致此错误的Observable,我怎么能知道抛出错误的特定Observable。是否有任何Rx方式知道这样的事情而不打破流。

rx-java rx-java2
1个回答
3
投票

要知道哪个observable导致了错误,您需要注释每个observable。

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,解开流名称和原始错误。

© www.soinside.com 2019 - 2024. All rights reserved.