Наблюдаемый не получает события - PullRequest
1 голос
/ 22 марта 2019

Мой код выглядит так:

 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. Как я могу это исправить?

1 Ответ

0 голосов
/ 26 марта 2019

@ Aks вчера ответил правильно: PublishSubject передает событие в потоковом режиме, как только оно приходит, не ожидая какого-либо подписчика.Поэтому, когда событие было запущено, а Драйвер не был подписан, я потерял это событие.Поэтому я использовал BehaviorRelay вместо этого, и это решило мою проблему. При подписке на BehaviorRelay вы получаете последний поток, даже если событие произошло до создания подписчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...