android - 如何根据从服务器接收的数据延迟多次重复 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 次。
解决方案
class
您可以创建一个被调用的 int 成员,counter
在发送请求之前使用 0 进行初始化,然后更改takeUntil
为:
.takeUntil( it.data.isCardExists || (++counter >= 2) )
推荐阅读
- aws-glue - 如何从数据库模式中的视图中提取数据到胶水的数据框中
- android - 如何在可绘制资源中创建此布局并将其作为活动背景
- node.js - 如何创建具有云功能的编码沙箱以在服务器上执行用户代码?做/不做?
- javascript - 如何使用 JavaScript/jQuery 从 ASP.NET Web 窗体的 GridView 内部同时上传多个文件?
- python-3.x - 根据 Pandas 中的多个参数计算覆盖月数
- angular - 不能在 ng-template 中使用 FormGroup
- mysql - mysql查询进入querybuilder
- python - 在 Python + Django 上使用 datetimepicker 时出现一些奇怪的日期
- c# - 如何将 Postgres TIMESTAMPTZ 读取为 .NET Core DateTimeOffset
- qt - 处理 MdiArea 中的窗口状态