Предполагая, что ваши Observable
s возвращают один объект (в этом случае вместо этого предпочтительнее было бы Single
), flatMap выдает результат первого на второй, затем условно отказывает второму с ошибкой, чтобы получить Повторите попытку , найдите и выполните свою работу:
static final class RetryRequestedException extends Exception { }
// no need for more than one of this
static final RetryRequestedException RETRY_INDICATOR = new RetryRequestedException();
source1.flatMap(value1 ->
source2.flatMap(value2 -> {
if (value2.notValid) {
return Observable.error(RETRY_INDICATOR);
}
return Observable.just(value2);
})
)
.retry(3, error -> error == RETRY_INDICATOR)
...