我有一个可观察量的缓存并重用它们。它们通常都使用某种缓存(主要是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
有没有更好的方法?我希望热可观察量始终表现得好像有人订阅并且永远不会从上游取消订阅......
背景
我有像可观察量这样的 redux 存储,无论某人是否订阅,它们都需要处理每个输入,以便重播的缓存值始终是最新的......
IMO 正确答案是在问题评论部分@prom85。
摘自Thomas Nield的《Learning RxJava 》一书
如果将 0 传递给
autoConnect()
numberOfSubscribers
参数, 它将立即开始射击,而不是等待任何观察者。这 可以方便地立即开始燃烧排放物,而无需等待 任何观察者。