Retrofit2でRxJavaとRxAndroidを使用しています。RxJava:Zip演算子でエラーを処理する方法は?
Observable<ResponseOne> responseOneObservable = getRetrofitClient().getDataOne()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Observable<ResponseTwo> responseTwoObservable = getRetrofitClient().getDataTwo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
上記の2つのObserverのようにzip演算子を使用します。
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());
}
});
何らかのエラーがある場合、それは直接testDataObservable
の加入者のonError
メソッドを呼び出しますresponseOneObservable
とresponseTwoObservable
に改造HTTP呼び出し中に発生します。
2人の観測者のうちいずれかが成功応答を返しても、私はZipオペレータのcall
メソッドで続行します。
zip
演算子を使用してエラー応答を処理するにはどうすればよいですか?
私は 'onErrorResumeNext'がこれを可能にすると信じています。 –