주제(subject)는 옵저버나 Observable처럼 행동하는 ReactiveX의 일부 구현체에서 사용 가능한 일종의 교각 혹은 프록시라고 볼 수 있는데, 그 이유는 주제는 옵저버이기 때문에 하나 이상의 Observable을 구독할 수 있으며 동시에 Observable이기도 하기 때문에 항목들을 하나 하나 거치면서 재배출하고 관찰하며 새로운 항목들을 배출할 수도 있다.
하나의 주제는 하나의 Observable을 구독하면서, (Observable이 "차가운" Observable인 경우 즉, 옵저버가 구독을 시작하기 전까지 항목들의 배출을 지연시키는 Observable일 경우)Observable이 항목들을 배출시키도록 동작시킨다. 그 결과로 인해 원래는 "차가운" Observable이었던 주제를 "뜨거운" Observable로 만들기도 한다.
모두 4 종류의 Subject
가 존재하며, 각각의 Subject는 특정 상황에 맞도록 설계되었다. 그렇기 때문에 모든 상황에서 아무 주제(Subject)를 임의대로 사용할 수 없으며 일부 구현체는 주제를 다른 이름으로 부르기도 한다(예를 들어, RxScala는 "주제(Subject)"를 "발행주제(PublishSubject)"로 부른다).
TBD
TBD
만약, Subject
를 정의했는데, 이를 Subscriber
인터페이스 없이 다른 에이전트에 전달하고 싶다면 그 Subject를 순수 Observable
로 리턴하는 asObservable
메서드를 사용하면 된다.
AsyncSubject
BehaviorSubject
PublishSubject
ReplaySubject
만약, Subject
를 정의했는데, 이를 Subscriber
인터페이스 없이 다른 에이전트에 전달하고 싶다면 그 Subject를 순수 Observable
로 리턴하는 asObservable
메서드를 사용하면 된다.
AsyncSubject
BehaviorSubject
PublishSubject
ReplaySubject
TBD
TBD
AsyncSubject
BehaviorSubject
ReplaySubject
TBD
TBD
TBD