我的代码如下:
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
没有任何订阅者。
我该如何解决?
答案 0 :(得分:0)
@Aks昨天正确回答了这个问题:PublishSubject
会在不等待任何订阅者的情况下立即流式传输事件。因此,当触发事件且未订阅驱动程序时,我丢失了该事件。
因此,我改用BehaviorRelay
,它解决了我的问题。订阅BehaviorRelay
时,即使事件发生在创建订阅者之前,您也可以获得最后一个流。