gpt4 book ai didi

java - RxJava- cache() 和 replay() 一样吗?

转载 作者:太空狗 更新时间:2023-10-29 22:51:43 27 4
gpt4 key购买 nike

我想知道是否有一个 cache() 运算符可以缓存 x 次发射,但也可以在指定的时间间隔(例如 1 分钟)后使它们过期。我一直在寻找类似...

Observable<ImmutableList<MyType>> cachedList = otherObservable
.cache(1, 1, TimeUnit.MINUTES);

这会缓存一个项目,但会在一分钟后过期并清除缓存。

我做了一些研究并找到了 replay运算符(operator)。看起来它可以满足这个需求,但我有一些问题。为什么会发热,需要连接?这是否使其不同于 cache() 运算符?我知道 cache() 模仿一个主题,但它不需要连接。

最佳答案

cachereplay 用于不同的用例。缓存是一个自动连接的重放一切容器,通常用于长期重放。回放可以有更多的参数化,并且可以进行有限的时间/大小回放,但需要开发人员指定何时开始。 autoConnect() 运算符允许您将此类 ConnectableObservable 实例转换为普通的 Observable,一旦订阅者订阅它们,它就会连接到源。这样,您就可以进行有界和自动连接的重播(需要 RxJava 1.0.14+):

source.replay(1, TimeUnit.SECONDS).autoConnect().subscribe(...);

关于java - RxJava- cache() 和 replay() 一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com