적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[RxSwift] Subject

hongssup_ 2021. 5. 24. 12:01
반응형

Subject

subject acts both as an observer and as an Observable. 

Subject는 observable인 동시에 observer. 옵저버이기 때문에 하나 이상의 Observable을 구독 할 수도 있고, 동시에 Obserbable이기도 하기 때문에 항목들을 하나 하나 거치면서 재방출하고 관찰하며 새로운 항목들을 방출할 수도 있다.   

 

Publish Subject

subject로 전달되는 이벤트를 옵저버에게 전달하는 가장 기본적인 형태의 subject

구독 이후에 Obserbable(들)이 방출한 새로운 이벤트들만 옵저버(구독자)에게 전달한다.

Subject가 생성되는 시점과 옵저버가 이 subject를 구독하기 시작하는 사이에 방출되는 항목들을 잃어버릴 수 있다는 단점. 

이벤트가 사라지지 않게 하고 싶다면 ReplaySubject 혹은 cold Obserbable을 사용해야 한다. 

 

type parameter를 String으로 선언하면 문자열이 포함된 next 이벤트를 받아 다른 옵저버에게 전달할 수 있다. 

subject.onCompleted() 선언하면 모든 구독자에게 completed 이벤트가 전달됨

subject 만료된 이후 새로운 구독자를 추가해줄 경우? 

더이상 onNext 이벤트는 전달되지 않고, completed 이벤트만 전달됨. 

onError 이벤트를 전달할 경우, 모든 구독자에게 error 이벤트가 전달됨. 

 

Behavior Subject

 

Replay Subjects

 

Async Subjects

 

Replays

 

 

 

 

참고 : ReactiveX, KxCoding

728x90
반응형

'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글

[RxSwift] RxCocoa Binding  (0) 2021.05.25
[RxSwift] Operators 연산자  (0) 2021.05.24
[RxSwift] Observables & Observers  (0) 2021.05.21
[RxSwift] ReactiveX  (0) 2021.05.20
SwiftUI  (0) 2021.05.15