如何在中继上使用 share()?

How do I use share() on a relay?

我有一个 behaviourRelay 想要在两个订阅之间共享:

var firmwareVersionRelay = BehaviorRelay<FirmwareVersionModel?>(value: nil).share()

但是,这会将中继变成 observable,这意味着我不能再使用 accept 运算符。

那么我该如何解决这个问题呢?有没有可能有共享中继?我应该简单地跳过共享吗?或者我应该只使用 onNext 而不是 accept

TL;DR 您无需在中继上使用 share() 即可共享它。

记住:

Subjects provide a convenient way to poke around Rx, however they are not recommended for day to day use. -- Intro to Rx

当一个 Observable 被创建时(见 create 运算符),它会被传递一个闭包,每次订阅 Observable 时都会调用该闭包。此闭包预计会执行某种副作用,然后发出事件。

如果您只想执行一次副作用但想多次订阅它,您可以使用 share() 运算符, 不会订阅每次订阅它的源 Observable。

对于主题(或中继,这是一种特殊的主题),没有要调用的闭包。自动分享主题(或中继)。