首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RxJava -使用retryWhen时超时

RxJava -使用retryWhen时超时
EN

Stack Overflow用户
提问于 2022-02-23 04:16:41
回答 1查看 72关注 0票数 0

我需要每隔10秒钟发送一次请求。这意味着下一个请求应该在收到来自上一个请求的响应后在10s内发送。最后一个请求应在60秒内启动。例如:

代码语言:javascript
复制
0:00: 1st request: sent
0:05: 1st request: response
0:15: 2nd request: sent
0:45: 2nd request: response
0:55: 3rd request: sent
1:10: 3rd request: response
No more requests

这是我的密码:

代码语言:javascript
复制
mainRepository.getFlightSearchResults(uuid)
                .repeatWhen { it.delay(10, TimeUnit.SECONDS) }
                .timeout(60, TimeUnit.SECONDS)
                .observeOn(schedulerProvider.ui)

其中getFlightSearchResults返回可观察的。如上文所述,请求正在发送,但请求在60年代后仍未停止发送。我如何才能停止发送(没有收到回复)60后的请求?

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 13:41:13

使用takeWhile解决

代码语言:javascript
复制
val startTimeMillis = System.currentTimeMillis()
mainRepository.getFlightSearchResults(uuid)
                .repeatWhen { it.delay(10, TimeUnit.SECONDS) }
                .takeWhile { System.currentTimeMillis() - startTimeMillis < 60_000 }
                .observeOn(schedulerProvider.ui)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71231315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档