首页 > 解决方案 > 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。我该如何解决?

标签: iosobservablerx-swiftobject-lifetimecombinelatest

解决方案


@Aks 昨天正确回答了它:PublishSubject一旦事件发生,无需等待任何订阅者即可流式传输。因此,当触发事件并且未订阅驱动程序时,我丢失了该事件。因此我BehaviorRelay改用它,它解决了我的问题订阅时BehaviorRelay,即使事件发生在订阅者创建之前,您也会获得最后一个流。


推荐阅读