ios - Observable 不接收事件
问题描述
我的代码如下所示:
private let myPublishSubject = PublishSubject<Bool>()
func method(input: String) -> String {
if input == something {
myPublishSubject.onNext(true)
return update(input)
}
myPublishSubject.onNext(false)
return input
}
// Output
let driver: Driver<String>
init() {
let myObservable = Observable.just("a")
driver = Observable.combineLatest(myObservable, myPublishSubject)
.map {
...
}
.asDriver()
}
现在,在调试中,我发现driver
只有订阅和处置。之后method
调用时,没有任何订阅者myPublishSubject.onNext
。我该如何解决?
解决方案
@Aks 昨天正确回答了它:PublishSubject
一旦事件发生,无需等待任何订阅者即可流式传输。因此,当触发事件并且未订阅驱动程序时,我丢失了该事件。因此我BehaviorRelay
改用它,它解决了我的问题订阅时BehaviorRelay
,即使事件发生在订阅者创建之前,您也会获得最后一个流。
推荐阅读
- python - Numpy Where Multiple Conditions ,无法将 dtyped [object] 数组与 [bool] 类型的标量进行比较
- javascript - hashRouter React 破坏 AnimatePresence(Framer-Motion) 退出动画
- r - 在 R 版本 4 中,Anova 无法将线性混合回归基础模型与其他具有不同变量的模型进行比较
- sparql - SPARQL 查询以获取所有“叶”类/最低级别的类
- mysql - Execute MySQL Trigger only when specific NEW value exists
- python - Python Locust 自定义客户端函数没有属性事件
- php - 使用 uasort 排序(多个条件)
- sql - 打开 Excel 工作簿上的 VBA 宏中的 SQL 查询 - 缓存问题
- c# - Fluent Assertion - 比较忽略空值的模型属性
- google-apps-script - 在 onOpen 中运行 showSidebar (Google Docs add on)