Я хочу использовать Rx-android для архивирования 2 запросов на модернизацию.Я пишу этот код.
MyTempService service = ServiceFactory.createRetrofitService(MyTempService.class, MyTempService.BOOK_FLIGHT);
Observable<DomesticAirportsResponse> search1 = service.getDomesticAirports(getCityRequest);
Observable<DomesticAirportsResponse> search2 = service.getDomesticAirports(getCityRequest2);
Observable.zip(search1, search2,
new Func2<DomesticAirportsResponse, DomesticAirportsResponse, ArrayList<DomesticAirport>>() {
@Override
public ArrayList<DomesticAirport> call(DomesticAirportsResponse result1, DomesticAirportsResponse result2) {
if (result1.getErrorMessage() == 1) {
ArrayList<DomesticAirport> airports;
airports = new ArrayList<>();
airports.addAll(result1.getResultObject());
airports.addAll(result2.getResultObject());
return airports;
} else { //show error message to client
Log.d(TAG, "response 1 has an error");
return null;
}
}
}
)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(
new Subscriber<ArrayList<DomesticAirport>>() {
@Override
public void onCompleted() {
Log.d(TAG, "onCompleted: ");
}
@Override
public void onError(Throwable e) {
Log.d(TAG, "onError: " + e.getMessage());
}
@Override
public void onNext(ArrayList<DomesticAirport> airports) {
Log.d(TAG, "onNext: " + airports.size());
}
}
);
Этот код работает правильно, но мне нужно проанализировать ответ каждого запроса. Если каждый ответ имеет истинное условие, вызывается Fun2.для большей ясности вопроса, предположим, что у нас есть 2 наблюдаемые с именами search1 и search2.search1 занимает 2 секунды, search2 - 30 секунд, а ответ search1 имеет ложное условие.Приведенный выше код показывает ошибку через 30 секунд, но мне нужно показать ошибку через 2 секунды, и search2 отменен.
Что мне делать для этого вопроса?