После просмотра нескольких постов у меня есть стратегия повторных звонков, как показано ниже.если один из сетевых вызовов в zip завершится неудачно, то вызов будет повторен три раза, и после последней попытки я выполню Observable.error()
.Но цепочка вызовов не попадает в блок doOnError
.Я также попытался подписаться на результат .subscribe(onNext -> {}, onError -> {}
, но блок onError
все еще не запущен.Что я тут не так делаю?
Observable.zip(
observable1,
observable2,
observable3,
(int a, int b, int c) ->
log.info("result {}", a + b + c)
)
.retryWhen(errors -> errors.zipWith(Observable.range(1, 3), (error, i) -> {
if (i++ < 3) {
return Observable.just(i);
}
return Observable.error(error);
}
))
.doOnError(error -> {
log.error("Failed network call after retries");
})
.subscribe();