RxJava-缓存()与replay()相同吗?
我想知道是否有一个RxJava-缓存()与replay()相同吗?,java,reactive-programming,rx-java,Java,Reactive Programming,Rx Java,我想知道是否有一个cache()操作符可以缓存x个排放量,但也可以在指定的时间间隔(例如1分钟)后使其过期。我在找像 Observable<ImmutableList<MyType>> cachedList = otherObservable .cache(1, 1, TimeUnit.MINUTES); Observable cachedList=otherObservable .缓存(1,1,时间单位为分钟); 这将缓存一个项目,但会在一分钟后过期并清除
cache()
操作符可以缓存x个排放量,但也可以在指定的时间间隔(例如1分钟)后使其过期。我在找像
Observable<ImmutableList<MyType>> cachedList = otherObservable
.cache(1, 1, TimeUnit.MINUTES);
Observable cachedList=otherObservable
.缓存(1,1,时间单位为分钟);
这将缓存一个项目,但会在一分钟后过期并清除缓存
我做了一些调查,找到了接线员。它似乎可以满足这个需求,但我有一些问题。为什么它很热,需要连接?这是否使它与
cache()
操作符不同?我知道cache()
模拟主题,但它不需要连接 缓存
和回放
适用于不同的用例。Cache是一个自动连接的replay everything容器,通常用于长期replay。Replay可以有更多的参数化,可以进行有时间/大小限制的Replay,但需要开发人员指定何时开始。autoConnect()
操作符允许您将此类ConnectableObservable
实例转换为一个普通的Observable
,一旦订阅者订阅了这些实例,它就会连接到源。这样,您就可以拥有一个有界的自动连接重播(需要RxJava 1.0.14+):
您可能应该提到,
autoconnect
是一个实验,它现在更有可能成为标准API:
source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...);