Tôi đang sử dụng RxJava và RxAndroid với Retrofit2.RxJava: Cách xử lý lỗi với toán tử nén?
Observable<ResponseOne> responseOneObservable = getRetrofitClient().getDataOne()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Observable<ResponseTwo> responseTwoObservable = getRetrofitClient().getDataTwo()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
Sử dụng toán tử zip như dưới đây trên hai Trình theo dõi.
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());
}
});
Nếu có bất kỳ lỗi xảy ra trong quá retrofit gọi http trong responseOneObservable
và responseTwoObservable
sau đó nó sẽ trực tiếp gọi onError
phương pháp của thuê bao của testDataObservable
.
Tôi muốn tiếp tục phương thức call
của nhà khai thác zip ngay cả khi bất kỳ ai trong hai quan sát đều có phản hồi thành công.
Cách xử lý phản hồi lỗi bằng cách sử dụng toán tử zip
?
Tôi tin rằng 'onErrorResumeNext' sẽ cho phép bạn thực hiện việc này. –