#android
#Android
Вопрос:
Я столкнулся со следующей проблемой: мне нужно вызвать REST API. Если данные, полученные с сервера, являются ложными, мне нужно подождать 2 секунды и снова вызвать API. Если это снова false, мне нужно снова подождать 2 секунды, а затем вызвать API. Если это снова false, у меня должен быть один поток, если я получил true в любом из ответов, у меня должен быть другой поток.
Для этой цели я создал следующую цепочку rx:
addDisposable(requests.checkPaylands3ds()
.subscribeOn(Schedulers.io())
.doOnSubscribe { view.showLoading() }
.repeatWhen { Flowable.timer(2, TimeUnit.SECONDS).repeat() }
.takeUntil { it.data.isCardExists }
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
if (it.data.isCardExists) {
// received true flow
} else {
// received false flow
}
}, this::onFailure))
Но в таком случае запросы повторяются до тех пор, пока я их не получу true
, и мне нужно дополнительно ограничить их только 2 раза.
Ответ №1:
Вы можете создать int-элемент class
called counter
, инициализированный 0 перед отправкой запроса и изменить takeUntil
на:
.takeUntil( it.data.isCardExists || ( counter >= 2) )