看了几篇文章后,我对重装电话提出了重试策略,如下所示。如果zip中的网络呼叫之一失败,则该呼叫将重试3次,最后一次重试后,我将执行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();