Development/RxSwift
Subject 란?
Tunko
2022. 5. 30. 13:08
Subject는 옵저버블의 기능과 옵저버의 기능을 같이 가지고 있습니다.
옵저버블은 옵저버에게 이벤트를 방출합니다. 옵저버는 옵저버블을 구독합니다.
하지만 옵저버가 이벤트를 방출 할 수 없고 옵저버블또한 옵저버를 구독할 수 없습니다.
이것을 가능하게 하는 두가지의 기능을 함께 가지고있는게 Subject입니다.
Subject의 종류 및 특징
- PublishSubject
- Subject로 전달되는 이벤트를 구독자로 전달합니다.
- BehaviorSubject
- 생성 시점에 시작 이벤트를 지정합니다.
- 전달받은 이벤트중에 가장 마지막 이벤트를 저장해 두었다가 새로운 구독자에게 최신이벤트로 방출합니다.
- ReplaySubject
- 하나 이상의 최신 이벤트를 버퍼에 저장합니다.
- 옵저버가 구독을 시작하면 버퍼에 있는 모든 이벤트를 전달합니다.
- AsyncSubject
- Subject로 전달되는 이벤트중 Completed 이벤트가 전달되는 시점에 마지막으로 전달되는 onNext 이벤트를 전달합니다.
Reley
RxSwift 는 Subject를 랩핑하는 두개의 Reley를 제공합니다.
- PublishRelay
- BehaviorRelay
Reley는 Completed, Error 이벤트를 전달하지 않습니다.
Next 이벤트만 전달됩니다.
즉, 종료되지 않는 지속적으로 이벤트를 받을 용도로 사용됩니다.
반응형