Subject 와 Relay
Subject란?
- Observable은 Observer와 달리 다른 Observable을 구독하지 못함
- Observer는 다른 Observer로 이벤트를 전달하지 못함
반면, subject는 다른 Observable로 부터 이벤트를 받아서 Observer에게 전달 할 수 있다.
즉, subject는 Observable임과 동시에 Observer다.
subject가 다른 Observable로부터 이벤트를 전달받아 Observer로 이벤트를 전달하는 흐름도
Subject 의 4가지 종류
PublishSubject
- subject로 전달되는 새로운 이벤트를 구독자로 전달한다.
BehaviorSubject
- 생성시점에 시작 이벤트를 지정하고, subject로 전달되는 이벤트 중에서 가장 마지막에 전달된 최신이벤트를 저장해두었다가 새로운 구독자에게 최신 이벤트를 전달한다.
ReplaySubject
- 하나 이상의 최신 이벤트를 버퍼에 저장한다. (buffer 크기만큼)
- 옵저버가 구독을 시작하면 버퍼에 있는 모든 이벤트를 전달한다.
AsyncSubject
- subject로 completed 이벤트가 전달되는 시점에 마지막으로 전달된 next이벤트를 구독자로 전달한다.
Relay
- subject를 rapping 하고 있는 것.
- 두가지 relay 존재.
PublishRelay
BehaviorRelay
Relay 특징
-
Relay는 일반적인 subject와 달리 next이벤트만 받고 completed, error 이벤트는 받지 않는다.
-
주로 종료없이 계속 전달되는 이벤트 시퀸스를 처리할때 활용한다.
자세한 내용은 다음 게시물에서 계속해보자ㅏㅣㅏ!