ios - RxCocoa - 为什么 PublishRelay 没有 asDriver() 方法?
问题描述
在 RxCocoa 上,我想知道为什么 PublishRelay 没有像 BehaviorRelay 这样的 asDriver() 方法?目前,如果我想将 publishRelay 转换为驱动程序,我必须指定在出现错误时返回的内容,这看起来很奇怪,因为继电器不能产生错误......
解决方案
这两个版本...Relay
用于对不同的概念进行建模:
BehaviorRelay
代表州PublishRelay
代表事件
重放State是有意义的,因此会BehaviorRelay
重放其最新值。
重播Events意义不大(不是?),因此PublishRelay
不会重播其最新值。
BehaviorRelay
考虑到这一点,将 a转换为是有意义的Driver
,因为驱动程序使用State驱动应用程序。BehaviorRelay
和的共享策略Driver
是共享副作用并在至少连接一个可观察对象时重放最新值。
APublishRelay
更好地由 a 表示Signal
,因此您可能可以使用 aSignal
来发射到。这种情况下的共享策略是不会重放最新的值,但在至少连接一个 observable 时仍然共享副作用。
(我使用来自 RxSwift 存储库的@freak4pc 的这个很棒的评论来构建这个答案)
推荐阅读
- javascript - 如何将 React 应用程序与纯 JavaScript 应用程序集成?
- python - 如何在 VSCode 中使用远程 Jupyter 服务器?
- regex - 正则表达式不匹配
- c - 在 C 中使用函数指针 `typedef` 的函数定义/声明
- javascript - react-native-highcharts 中的 setOptions
- typescript - Typescript 区分元组的联合不能按预期工作
- python-3.x - 如何存储返回的变量,以便其他页面能够使用 Python 和 Selenium 访问
- nginx - 内部重定向的 Nginx 响应标头中的奇怪行为
- python - 列表对象没有属性“detectedLanguage”
- python - 如何将 8 位数字解析为日期?