Ich benutze RxJava und RxAndroid mit Retrofit2.RxJava: Wie Fehler mit Zip-Operator umgehen?
Observable<ResponseOne> responseOneObservable = getRetrofitClient().getDataOne()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Observable<ResponseTwo> responseTwoObservable = getRetrofitClient().getDataTwo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Verwendung von Zip-Operator wie unten auf zwei Observer.
Observable<ArrayList<TestData>> testDataObservable = Observable.zip(responseOneObservable, responseTwoObservable, new Func2<ResponseOne, ResponseTwo, ArrayList<TestData>>() {
@Override
public ArrayList<TestData> call(ResponseOne responseOne, ResponseTwo responseTwo) {
ArrayList<TestData> testDataList = new ArrayList();
// Add test data from response responseOne & responseTwo
return testDataList;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<ArrayList<TestData>>() {
@Override
public void onNext(ArrayList<TestData> testDataList) {
}
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted");
}
@Override
public void onError(Throwable t) {
Log.d(TAG, "onError Throwable: " + t.toString());
}
});
Wenn es ein Fehler tritt beim Umrüsten http Aufruf in responseOneObservable
und responseTwoObservable
dann wird es direkt onError
Methode der Teilnehmer von testDataObservable
nennen.
Ich möchte in call
Methode von Zip-Operator fortsetzen, auch wenn jemand von zwei beobachtbaren Erfolg Antwort erhalten hat.
Wie wird die Fehlerreaktion mit dem Operator zip
gehandhabt?
Ich glaube, 'onErrorResumeNext' sollte Ihnen erlauben, dies zu tun. –