我需要每隔10秒钟发送一次请求。这意味着下一个请求应该在收到来自上一个请求的响应后在10s内发送。最后一个请求应在60秒内启动。例如:
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这是我的密码:
mainRepository.getFlightSearchResults(uuid)
.repeatWhen { it.delay(10, TimeUnit.SECONDS) }
.timeout(60, TimeUnit.SECONDS)
.observeOn(schedulerProvider.ui)其中getFlightSearchResults返回可观察的。如上文所述,请求正在发送,但请求在60年代后仍未停止发送。我如何才能停止发送(没有收到回复)60后的请求?
发布于 2022-02-23 13:41:13
使用takeWhile解决
val startTimeMillis = System.currentTimeMillis()
mainRepository.getFlightSearchResults(uuid)
.repeatWhen { it.delay(10, TimeUnit.SECONDS) }
.takeWhile { System.currentTimeMillis() - startTimeMillis < 60_000 }
.observeOn(schedulerProvider.ui)https://stackoverflow.com/questions/71231315
复制相似问题