Android RxJava在其他observable发出错误时重试

Android RxJava在其他observable发出错误时重试,android,rx-java,retrofit2,Android,Rx Java,Retrofit2,我想创建请求链,但看起来应该是这样 我调用apiService.changePassword()可以得到成功200和错误401。如果我成功,那么一切都很好,否则我必须调用apiService.refreshttoken(),现在如果我得到刷新的令牌,我应该再次调用apiService.changePassword()。我考虑使用retryWhen。我应该用什么 [编辑:] 我得到了解决方案: apiService.jobOffers(...) .subscribe

我想创建请求链,但看起来应该是这样

我调用apiService.changePassword()可以得到成功200和错误401。如果我成功,那么一切都很好,否则我必须调用
apiService.refreshttoken()
,现在如果我得到刷新的令牌,我应该再次调用
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);
                            }
                        });
                    }
                });
apiService.jobOffers(…)
.subscribeOn(Schedulers.io())
.flatMap(新函数1(){
@凌驾
公共可观察呼叫(响应){
...
}
}).retryWhen(新函数1>(){
@凌驾
公共可观察呼叫(可观察>(){
@凌驾
公共可观察呼叫(可丢弃可丢弃){
if(可丢弃的实例(异常){
///刷新令牌
}
}
返回可观测误差(可丢弃);
}
});
}
});

是的,这是
retryWhen
的完美用例。但是如何使用呢你有什么样的例子吗?是的,这是
retryWhen
的完美用例。但是如何呢你有什么样的例子吗?