Rx Java retryWhen с обновленным значением + параллелизм - PullRequest
1 голос
/ 14 июля 2020

Я хотел бы проверить две вещи:

  1. правильно ли я использую retryWhen. Обычно, когда исключение перехвачено, я хочу получить обновленное значение и перезапустить последовательность.

  2. , если другой функции также требуется value, как заставить ее ждать updateValue доделать в первую очередь? Я играл с .share() и RxReplayingShare, но не уверен, как их правильно использовать.

val value = 0

@Test
fun test() {
    executeFunction()
        .retryWhen { errors -> errors.flatMap { error ->
                if (error is WrongValue) {
                    updateValue()
                       .doOnSuccess { value = it }
                       .toObservable()
                } else {
                    Observable.error(error)
                }
            }
        }
}

fun executeFunction(): Single<Int> =
    if (value == 0) {
        Single.error(WrongValue())
    } else {
        Single.just(value)
    }

fun updateValue(): Single<Int> = Single.just(1)

...