【发布时间】:2019-09-26 18:30:24
【问题描述】:
我需要一种相对简单的过期缓存机制(比如 1 分钟)。
- 当第一个订阅者订阅时,我想进行 API 调用。
- 当第二个在一分钟内订阅时,不想进行 API 调用,而是向下游推送之前加载的值。
- 当另一个人在第一个订阅一分钟后订阅时,我希望再次进行 API 调用。
现在,我想在单个 rxjava 链中执行此操作。 .replay(1, 1, MINUTE) 看起来很完美,直到我了解到,一分钟过去后,源 observable 不会重新订阅。我再也没有从那个可观察到的东西中得到任何东西。我可能需要将replay() 与repeatWhen{} 合并但找不到的东西。我尝试了非常奇特的组合,但没有一个适用于我的测试用例。
【问题讨论】:
-
您是否尝试过将
.interval(1, MINUTE)与.replay(1, 1, MINUTE)结合使用?interval()每分钟调用一次 API。 -
问题是我不想每分钟都打这个电话。我只想在需要时拨打电话,但不超过一分钟。
标签: android kotlin rx-java reactive-programming rx-java2