Subject
Subject에 대해 알아보자 .
공식 홈페이지를 이용해보면,
4가지의 Subject가 있다고 한다.
하나하나 살펴보자.
마블을 통해 이해해보자.
AsyncSubject는 Observable을 통해 Subscribe 된 후 어떠한 이벤트가 발생해도 결과를 배출하지 않는다. 그러다가 Observable의 동작이 완료되고 나면 마지막 결과를 모든 Observable에 배출한다. ( 파랑색이 모든 Stream에 있다. )
또한, Observable이 오류로 인해 동작이 끝난다면, 모든 Observable에 오류값을 전달한다.
옵저버가 BehaviorSubject를 Subscribe 하기 시작하면, 기본값 (분홍색) 을 배출하고, 앞으로 오는 모든 이벤트를 배출한다.
도중 다른 옵저버가 Subscribe 하면, 바로 직전의 값 (연두) 를 배출하는 것으로 보아
분홍색 이벤트가 완전 Default 값이 아닐 수도 있다고 추측할 수 있다. 바로 직전 이벤트일 수도 있다.
오류로 인해 종료된다면, 에러를 반환한다. 새로 subscribe한 Observable 에도 에러를 반환한다.
이번엔 Subscribe 했을 때 아무것도 배출하지 않고, 그다음 이벤트부터 배출하는 것을 볼 수 있다.
에러가 발생했을 때도 예상이 가능하다.
RelaySubject 는 Subscribe 시점과 별개로 그 전에 발생했던 모든 이벤트들을 배출한다.