Я хотел бы проверить две вещи:
правильно ли я использую retryWhen
. Обычно, когда исключение перехвачено, я хочу получить обновленное значение и перезапустить последовательность.
, если другой функции также требуется 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)