首页 > 解决方案 > 如何根据从服务器接收的数据延迟多次重复 API 调用?

问题描述

我遇到了以下问题:我需要调用 REST API。如果从服务器接收到的数据是假的,我需要等待 2 秒,然后再次调用 API。如果再次为假,我需要再次等待 2 秒,然后调用 API。如果它再次为假,我应该有一个流程,如果我在任何响应中收到 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 次。

标签: android

解决方案


class您可以创建一个被调用的 int 成员,counter在发送请求之前使用 0 进行初始化,然后更改takeUntil为:

.takeUntil( it.data.isCardExists || (++counter >= 2) )

推荐阅读