RxJava-缓存()是否与replay()相同?

前端之家收集整理的这篇文章主要介绍了RxJava-缓存()是否与replay()相同?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道是否有一个缓存()运算符可以缓存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(...);

猜你在找的Java相关文章