RxSwift-Subjectとの違いを観測できる
観測可能またはSubjectの違い
Subject
//SubjectType에서 ObservableType을 채택
public protocol SubjectType : ObservableType {
associatedtype Observer: ObserverType
/// Returns observer interface for subject.
///
/// - returns: Observer interface for subject.
func asObserver() -> Observer
}
UniCast or MultiCast
let randomWithIntObservable: Observable<Int> = Observable<Int>.create { observer in
observer.onNext(Int.random(in: 1...100))
return Disposables.create()
}
randomWithIntObservable.subscribe { event in
print("randomWithInt :(1) \(event)")
}
randomWithIntObservable.subscribe { event in
print("randomWithInt :(2) \(event)")
}
Intタイプの観測性を作成することで、observerが1~100個の数字のイベントを処理できるようにコードを実現しました.これでリリースイベントを購読し、同じ値があるかどうかを確認しましたが、結果は!リリース値が異なるイベントが表示されます.観測できるのはユニキャスト方式だから!Unicastモード(1:1)では、1人の観察者のみが接続によって購読観察を許可します.したがって、最初のオブザーバが終了すると、ディスパッチ可能なリストが返され、2番目のサブスクリプションが呼び出されます.
let randomWithSubject: PublishSubject<Int> = PublishSubject<Int>()
randomWithSubject.subscribe { event in
print("randomWithIntSubject :(1) \(event)")
}
randomWithSubject.subscribe { event in
print("radomWithIntSubject :(2) \(event)")
}
randomWithSubject.onNext(Int.random(in: 1...100))
Observerableとは異なり、SubjectはonNext(イベントパブリッシュ)だけでなくSubscribe(サブスクリプション)であることがわかります.Observableとは異なりマルチキャストであるため、結果値にも差がある.
サブスクリプションを使用して、同じイベント結果値を決定できます.これは私たちが以前強調したマルチキャスト方式です.Subjectは、複数のオブザーバーを購読、表示、共有することができます.だから1回目の購読の活動は2回目の購読の活動に任せました!
Reference
この問題について(RxSwift-Subjectとの違いを観測できる), 我々は、より多くの情報をここで見つけました https://velog.io/@dohyun8032/RxSwift-Observable-vs-Subject-차이점テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol