Rx java 缓存最后发出的项RxJava运算符

Rx java 缓存最后发出的项RxJava运算符,rx-java,Rx Java,是否有操作员缓存最后发出的项目并将其传递给每个新订户?换句话说,一个使可观察对象的行为类似于行为主体的操作符?是的,您可以使用参数为1的replay(bufferSize)操作符,从: 返回一个ConnectableObservable,该对象共享对源Observable的单个订阅,该源Observable以最多bufferSize的方式重播该Observable发出的项 replay将缓存最后一个项目,并将其重播给任何新订阅者,请注意,它是可连接可观察的,因此您必须调用connect(),使其

是否有操作员缓存最后发出的项目并将其传递给每个新订户?换句话说,一个使可观察对象的行为类似于
行为主体的操作符

是的,您可以使用参数为1的
replay(bufferSize)
操作符,从:

返回一个ConnectableObservable,该对象共享对源Observable的单个订阅,该源Observable以最多bufferSize的方式重播该Observable发出的项


replay将缓存最后一个项目,并将其重播给任何新订阅者,请注意,它是
可连接可观察的
,因此您必须调用
connect()
,使其开始发射项目,或者使用
refCount()
获得一个
可观察的
,它会自动与第一个
订阅者一起发射项目,最后一次订阅取消时取消订阅。

是。但是在一个叫做ReplayingShare的第三方库中。以下是链接:

.replay(1).autoConnect()
相比,如果下游没有订户,它可以断开与上游的连接

.replay(1).refCount()
相比,它还可以缓存最后一个值,即使您已经断开了与它的连接


此外,如果上游结束(无论您使用哪个
refCount
/
autoConnect
),您都不会为下一个订户获得重播。但通过ReplayingShare,您将始终获得最后一个项目缓存。

从ReplayingShare github页面:“任何终端事件都将清除缓存的值。”这是否意味着如果上游结束,该值将被清除?