Как повторить вызов API несколько раз с задержкой в зависимости от данных, полученных с сервера?

#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) )