RxJava运算符,如replay(1,1,MINUTE),但经过1分钟后重新订阅

问题描述 投票:0回答:1

我需要一种可能会想到的相对简单的缓存过期机制(例如1分钟)。

  1. [第一个订阅者订阅时,我想进行API调用。
  2. 当第二个订阅者在一分钟内订阅时,不想进行API调用,而是向下游推送先前加载的值。
  3. [从第一个分钟过后,另一个人订阅时,我希望再次进行API调用。

现在,我想在单个rxjava链中执行此操作。 .replay(1, 1, MINUTE)看起来很完美,直到我了解到,经过一分钟后,可观察到的源不再被订阅。我再也看不到任何东西了。我可能需要将replay()repeatWhen{}合并但无法完全找到的东西。我尝试了真正的异国组合,但没有一个适合我的测试用例。

android kotlin rx-java reactive-programming rx-java2
1个回答
0
投票

您可以使用以下运算符

  1. 。retryWhen()运算符以重新订阅。
  2. delay()运算符以延迟订阅者:延迟运算符通过在发出源Observable的每个项目之前暂停特定的时间增量(由您指定)来修改其源Observable。这具有将可观察对象发出的整个项目序列按时间顺序向前移动指定的增量的效果。
© www.soinside.com 2019 - 2024. All rights reserved.