如果我使用retryWhen指数后退,如何在onError回调中接收错误

时间:2016-07-01 19:08:08

标签: android performance retrofit rx-java retrofit2

我正在使用rxjava改造2并且我在函数时使用重试实现了指数后退,但是当请求失败时,我在onError回调中没有收到错误,但我立即收到onCompleted。

如何在onError回调中收到错误?

这是我的代码:

mRestApi.getObject(url)
            .retryWhen(attempts -> attempts.zipWith(Observable.range(1, 3), (n, i) -> i)
                    .flatMap(i -> {
                        Log.d(TAG, "delay retry by " + i + " second(s)");
                        return Observable.timer(i, TimeUnit.SECONDS);
                    }));

1 个答案:

答案 0 :(得分:1)

您可以尝试doOnError运算符,例如

mRestApi.getObject(url)
        .doOnError(e -> System.out.println(e.getMessage()))
            .retryWhen(attempts -> attempts.zipWith(Observable.range(1, 3), (n, i) -> i)
                    .flatMap(i -> {
                        Log.d(TAG, "delay retry by " + i + " second(s)");
                        return Observable.timer(i, TimeUnit.SECONDS);
                    }));