gpt4 book ai didi

java - RxJava 中共享运算符的作用是什么?我应该什么时候使用它?

转载 作者:行者123 更新时间:2023-12-02 12:21:42 27 4
gpt4 key购买 nike

我知道share()是publish().refCount()的替代品。然后来自 RxJava wiki:

Observable.publish( ) — represents an Observable as a Connectable Observable ConnectableObservable.refCount( ) — makes a Connectable Observable behave like an ordinary Observable

这让我很困惑。如果在publish().refCount()之后,它的行为就像一个普通的Observable,我为什么要使用它,这个api有什么意义?

最佳答案

你是对的 - Observable.share 只是 publish().refCount() 的快捷方式。我认为您上面引用的描述并不完全清楚,因为 ConnectedObservable.refCount 做得更多一点:)

如果将 Observable 转换为 ConnectableObservable - 它不会发出项目(即使订阅了某些内容),除非显式调用 ConnectableObservable.connect - 它基本上推迟了 subscribe 方法的执行,并防止为每个订阅者多次执行它。这种技术通常用于确保在 observable 开始发出项目之前所有订阅者都已订阅(换句话说 - 在每个人都订阅之后 - connect() 方法被调用)。

如果您有多个订阅者(这种情况经常发生),您必须处理他们的订阅和取消订阅,这就是事情变得棘手的地方。这就是引入 refCount() 的原因。该操作符返回新的 Observable,跟踪有多少订阅者订阅了它,并且只要至少有一个订阅就保持连接。当第一个订阅者出现时,它也会自动连接。

PS。我正在学习如何使用 RxJava,如果我错了 - 请指出!

关于java - RxJava 中共享运算符的作用是什么?我应该什么时候使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45725823/

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