В цепочке запроса RxJava, как пропустить первый запрос, если он уже вернул успех? - PullRequest
0 голосов
/ 21 сентября 2018

Например, у меня есть два сетевых запроса:

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()
}

Интересно, есть лилучший способ сделать это.

Заранее спасибо.

...