RxJava:从每个订阅开始重新启动

时间:2015-03-04 17:04:54

标签: java system.reactive rx-java

想象一下,我有一些耗时的任务,我只想偶尔运行。

我想将它包装成一个observable并将其传递给某个组件。 只要想要检索数据,该组件就会订阅此observable,并在收到数据后取消订阅。

即。我想要一个observable,在订阅时会调用一些昂贵的API调用,并且每次调用时,此API调用都可以返回不同的数据 - 然后这个observable将关闭,直到下一次订阅。

这可能实现吗?

我看过'重播()'和' cache()'运营商,但他们不会工作,因为从我的理解,他们将缓存一次,然后重播缓存的值,这不会改变我的数据。

还有' observable.publish()'但似乎这将成为一个热门的观察者,它将一直与源观察源保持联系......

1 个答案:

答案 0 :(得分:3)

据我了解你的问题,你需要冷漠观察。

   Observable<Integer> obs = Observable.from(1, 2, 3, 4);
   obs.subscribe(); // will iter over values
   obs.subscribe(); // will iter AGAIN over values

所以,如果你的observable是你的api调用,并且它是一个冷可观察的,只需订阅两次即可执行两次api调用。