加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 17:43:40 所属栏目:Java 来源:网络整理
导读:我想知道是否有一个缓存()运算符可以缓存x个排放数量,但是也会在指定的时间间隔(例如1分钟)后过期.我正在寻找像…的东西 ObservableImmutableListMyType cachedList = otherObservable .cache(1,1,TimeUnit.MINUTES); 这将缓存一个项目,但会在一分钟后过期并
我想知道是否有一个缓存()运算符可以缓存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(...);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读