Например, у меня есть два сетевых запроса:
Single<FirstResponse> firstRequest = firstCall()
Single<SecondResponse> secondRequest = secondCall()
Теперь Второй должен вызываться только тогда, когда первый успешен, поэтому я делаю что-то вроде:
firstRequest().flatmap( firstResponse -> secondRequest ).subscribe()
Этохорошо работает, если оба вызова завершаются успешно, но как насчет того, чтобы я не хотел, чтобы первый вызов вызывался, когда он уже вернул успех?
Итак, чего я хочу добиться, так это когда первый запрос успешно завершен, а второйне удалось, я только хочу пропустить первое и вызвать только второе.
В настоящее время я могу думать только о том, чтобы сделать что-то вроде:
public firstResponse = null;
public Single<FirstResponse> getFirstRequest() {
if (firstResponse!=null && firstResponse.isSuccess()) {
return Single.just(firstResponse);
} else {
return firstRequest;
}
}
public void doRequest() {
getFirstRequest()
.doOnSuccess( firstResponse -> this.firstReponse = firstResponse )
.flatMap( firstResponse -> secondRequest)
.subscribe()
}
Интересно, есть лилучший способ сделать это.
Заранее спасибо.