Subject Overview

이숭인·2021년 6월 29일
0

Mastering RxSwift

목록 보기
5/7

Subject 와 Relay

Subject란?

  • Observable은 Observer와 달리 다른 Observable을 구독하지 못함
  • Observer는 다른 Observer로 이벤트를 전달하지 못함

반면, subject는 다른 Observable로 부터 이벤트를 받아서 Observer에게 전달 할 수 있다.

즉, subjectObservable임과 동시에 Observer다.


subject가 다른 Observable로부터 이벤트를 전달받아 Observer로 이벤트를 전달하는 흐름도

Subject 의 4가지 종류

PublishSubject

  • subject로 전달되는 새로운 이벤트를 구독자로 전달한다.

BehaviorSubject

  • 생성시점에 시작 이벤트를 지정하고, subject로 전달되는 이벤트 중에서 가장 마지막에 전달된 최신이벤트를 저장해두었다가 새로운 구독자에게 최신 이벤트를 전달한다.

ReplaySubject

  • 하나 이상의 최신 이벤트를 버퍼에 저장한다. (buffer 크기만큼)
  • 옵저버가 구독을 시작하면 버퍼에 있는 모든 이벤트를 전달한다.

AsyncSubject

  • subject로 completed 이벤트가 전달되는 시점에 마지막으로 전달된 next이벤트를 구독자로 전달한다.

Relay

  • subject를 rapping 하고 있는 것.
  • 두가지 relay 존재.

PublishRelay

  • PublishSubject를 래핑한 것

BehaviorRelay

  • BehaviorSubject를 래핑한 것

Relay 특징

  • Relay는 일반적인 subject와 달리 next이벤트만 받고 completed, error 이벤트는 받지 않는다.

  • 주로 종료없이 계속 전달되는 이벤트 시퀸스를 처리할때 활용한다.

자세한 내용은 다음 게시물에서 계속해보자ㅏㅣㅏ!

profile
iOS Developer

0개의 댓글