【发布时间】:2016-11-23 14:34:13
【问题描述】:
我是 RxJava 的新手,执行第一个“困难”查询时有些痛苦。
我有两个从 Retrofit 生成的 Observable,一个“ping”一个新的 api,另一个是旧的。第一个将查询'http://myurl.com/newapi/ping',第二个将查询'http://myurl.com/oldapi/ping'。这个请求的结果无关紧要,我只想知道服务器使用的是新的还是旧的api。
所以我想同时调用两个 observables,最后在最后有一个布尔值来知道我使用的是旧的还是新的 api。
我试过类似的东西
Observable.mergeDelayError(obsOldApi,obsNewApi)
.observeOn(AndroidSchedulers.mainThread(), true)
.subscribeOn(Schedulers.io())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(String s) {
}
});
但是 onError 将被调用一次(我希望只有在两个请求都失败时才调用它)并且当 onNext 被调用时,我不知道它来自哪个请求(旧的还是新的 api?)。
感谢您的帮助
【问题讨论】:
-
你可以使用
onErrorResume,但这意味着只有在另一个失败时才调用一个api
标签: android rx-java retrofit2 rx-android