重试后RxJava2投掷错误

时间:2018-10-25 03:51:07

标签: retrofit2 reactive-programming rx-java2

看了几篇文章后,我对重装电话提出了重试策略,如下所示。如果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();

0 个答案:

没有答案