如何在中继上使用 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。
对于主题(或中继,这是一种特殊的主题),没有要调用的闭包。自动分享主题(或中继)。
我有一个 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。
对于主题(或中继,这是一种特殊的主题),没有要调用的闭包。自动分享主题(或中继)。