簡體   English   中英

在RxSwift中,我如何設置一個Subject來觀察另一個Observable?

[英]In RxSwift how can I set up a Subject to observe another Observable?

假設我有以下內容:

let theSubject = PublishSubject<String>()
let theObservable = Observable.just("Hello?")

我如何設置theSubject觀察員theObservable

在RxSwift中,我們說主題是一個觀察者,可以訂閱一個或多個Observables ......

您能否展示一個簡單的代碼示例,說明如何將theSubject作為theSubject的觀察者進行theObservable

代碼是:

theObservable
    .bind(to: theSubject)
    .disposed(by: bag)

要么:

theObservable 
    .subscribe(theSubject)
    .disposed(by: bag)

如果您只按其他人的建議進行subscribe(onNext:) ,則只傳遞onNext事件。 您應該使用bind來傳遞所有內容。

(但實際上你可能不應該使用一個主題。而是直接將正在聽主題的東西綁定到Observable。

答案是

theObservable
    .subscribe(onNext: { theSubject.onNext($0) })
    .disposed(by: disposeBag)

這將確保每次theObservable發出時,該值也將傳遞給theSubject

注意這只傳遞值onNext ,如果你想處理所有情況,那么使用bind(to:)作為Daniel T.的答案 (或drive Driverdrive Driver

更多Observables的示例

在以下示例中,來自不同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)

產量

主題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM