当其他observable发出错误时,RxJava重试

时间:2016-08-29 10:15:05

标签: android rx-java retrofit2

我想创建请求链但它应该看起来。

我致电apiService.changePassword(),我可以获得成功200和401错误。如果我获得成功,那么一切都很好,我必须致电apiService.refreshToken()现在如果我得到刷新令牌,我应该再次致电apiService.changePassword()。我考虑使用retryWhen。我应该用什么?

[编辑:]

我得到了解决方案:

apiService.jobOffers(...)
                .subscribeOn(Schedulers.io())
                .flatMap(new Func1<Response<ResponseBody>, Observable<FeedDataProvider>>() {
                    @Override
                    public Observable<FeedDataProvider> call(Response<ResponseBody> response) {
                        ...

                    }
                }).retryWhen(new Func1<Observable<? extends Throwable>, Observable<?>>() {
                    @Override
                    public Observable<?> call(Observable<? extends Throwable> observable) {
                        return observable.flatMap(new Func1<Throwable, Observable<?>>() {
                            @Override
                            public Observable<?> call(Throwable throwable) {
                                if(throwable instanceof RetrofitException) {
                                    ///refresh token
                                    }
                                }
                                return Observable.error(throwable);
                            }
                        });
                    }
                });

0 个答案:

没有答案