Tunko Development Diary

Subject 란? 본문

Development/RxSwift

Subject 란?

Tunko 2022. 5. 30. 13:08

ReactiveX - Subject

Subject는 옵저버블의 기능과 옵저버의 기능을 같이 가지고 있습니다.

옵저버블은 옵저버에게 이벤트를 방출합니다. 옵저버는 옵저버블을 구독합니다.

하지만 옵저버가 이벤트를 방출 할 수 없고 옵저버블또한 옵저버를 구독할 수 없습니다.

이것을 가능하게 하는 두가지의 기능을 함께 가지고있는게 Subject입니다.

Subject의 종류 및 특징

  • PublishSubject
    • Subject로 전달되는 이벤트를 구독자로 전달합니다.
  • BehaviorSubject
    • 생성 시점에 시작 이벤트를 지정합니다.
    • 전달받은 이벤트중에 가장 마지막 이벤트를 저장해 두었다가 새로운 구독자에게 최신이벤트로 방출합니다.
  • ReplaySubject
    • 하나 이상의 최신 이벤트를 버퍼에 저장합니다.
    • 옵저버가 구독을 시작하면 버퍼에 있는 모든 이벤트를 전달합니다.
  • AsyncSubject
    • Subject로 전달되는 이벤트중 Completed 이벤트가 전달되는 시점에 마지막으로 전달되는 onNext 이벤트를 전달합니다.

Reley

RxSwift 는 Subject를 랩핑하는 두개의 Reley를 제공합니다.

  • PublishRelay
  • BehaviorRelay

Reley는 Completed, Error 이벤트를 전달하지 않습니다.

Next 이벤트만 전달됩니다.

즉, 종료되지 않는 지속적으로 이벤트를 받을 용도로 사용됩니다.

반응형

'Development > RxSwift' 카테고리의 다른 글

RxSwift) BehaviorSubject 란?  (0) 2022.05.30
RxSwift) PublishSubject 란?  (0) 2022.05.30
RxSwift) Operators 란?  (0) 2022.05.30
RxSwift) Disposables 란?  (0) 2022.05.30
RxSwift) Observables 과 Observers  (0) 2022.05.30
Comments