我想知道是否有一个缓存()运算符可以缓存x个排放
数量,但是也会在指定的时间间隔(例如1分钟)后过期.我正在寻找像…的东西
Observable<ImmutableList<MyType>> cachedList = otherObservable
.cache(1,1,TimeUnit.MINUTES);
这将缓存一个项目,但会在一分钟后过期并清除缓存.
我做了一些研究,发现了replay运算符.似乎这样会满足这个需要,但我有一些问题.为什么它很热,需要连接?这是否与cache()运算符不同?我知道cache()模拟主题,但不需要连接.
缓存和重放是针对不同的用例.缓存是一种
自动连接重播 – 通常用于长期重播的所有容器.重播可以有更多的参数化,并且可以进行有限的时间/大小重播,但要求开发人员指定何时开始. autoConnect()运算符允许您将这样的ConnectableObservable实例转换为一个普通的Observable,一旦
用户订阅它,它连接到源.这样,您可以有一个有界和
自动连接的重播(需要RxJava 1.0.14):
source.replay(1,TimeUnit.SECONDS).autoConnect().subscribe(...);