我有一个可观察对象的缓存并重复使用它们。它们通常都使用某种类型的缓存(主要是replay(1).refCount()
),我可以确保仅使用此缓存一次即可进行基础计算。
我现在遇到了一些情况,即基础流发出项目,并且没有人订阅我的缓存可观察对象。我仍然希望它处理此事件。我该怎么办?
目前,我只能按照以下方式进行操作:
val o = observable.reply(1)
o.connect() // make sure this hot observable always is connected and processes it's input
return o // this one is cached
有更好的方法吗?我希望热门的可观察对象始终像有人在订阅,并且永远不会从上游退订...
背景
我有像observables这样的redux存储区,那些存储区需要处理每个输入,无论是否有人订阅,以便重播的缓存值始终是最新的...
答案 0 :(得分:0)
IMO 正确答案是@prom85 在问题评论部分。
来自Thomas Nield的Learning RxJava 书籍
<块引用>如果您将 0 传递给 autoConnect()
作为 numberOfSubscribers
参数,
它会立即开始射击,而不是等待任何观察者。这
可以方便地立即开始发射,而无需等待
任何观察者。