即使没有订阅者,也确保可观察的执行

时间:2018-09-21 16:27:48

标签: rx-java2

我有一个可观察对象的缓存并重复使用它们。它们通常都使用某种类型的缓存(主要是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存储区,那些存储区需要处理每个输入,无论是否有人订阅,以便重播的缓存值始终是最新的...

1 个答案:

答案 0 :(得分:0)

IMO 正确答案是@prom85 在问题评论部分。

来自Thomas NieldLearning RxJava 书籍

<块引用>

如果您将 0 传递给 autoConnect() 作为 numberOfSubscribers 参数, 它会立即开始射击,而不是等待任何观察者。这 可以方便地立即开始发射,而无需等待 任何观察者。