假设我有以下内容:
let theSubject = PublishSubject<String>()
let theObservable = Observable.just("Hello?")
如何将theSubject
设置为观察者theObservable
?
在RxSwift中,我们说主题是一个观察者,可以订阅一个或多个Observables ......
你能展示一个简单的代码示例,说明如何将theSubject
作为theObservable
的观察者连接起来吗?
theObservable
.subscribe(onNext: { theSubject.onNext($0) })
.disposed(by: disposeBag)
这将确保每次theObservable
发出时,该值也将传递给theSubject
。
注意这只传递值onNext
,如果你想处理所有的情况,那么使用bind(to:)
作为Daniel T.的answer(或者drive
用于Driver
s)
在下面的示例中,来自不同Observables
的值将传递给theSubject
let theSubject = PublishSubject<String>()
let theObservable = Observable.just("Hello?")
let anotherObservable = Observable.just("Hey there")
theSubject.asObservable()
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
theObservable
.subscribe(onNext: { theSubject.onNext($0) })
.disposed(by: disposeBag)
anotherObservable
.subscribe(onNext: { theSubject.onNext($0) })
.disposed(by: disposeBag)
代码是:
theObservable
.bind(to: theSubject)
.disposed(by: bag)
要么:
theObservable
.subscribe(theSubject)
.disposed(by: bag)
如果您只像其他人建议的那样执行subscribe(onNext:)
,则只会传递onNext事件。您应该使用bind来传递所有内容。
(但实际上你可能不应该使用一个主题。而是直接将正在听主题的东西绑定到Observable。