RxJS Subject

김상연·2021년 4월 20일
0

기업협업

목록 보기
6/8

RxJS는 크게 두 가지 개념이 있다.

Observable , Subject

하지만 큰 개념으로 보자면 Subject로도 Observable 동작 가능

Observable은 subscrib만 가능. 무언가를 감지만 한다.
하지만 Subject는 값을 임의적으로 바꿀 수 있다.

Subject의 종류

BehaviorSubject

옵저버가 BehaviorSubject를 구독하기 시작하면, 옵저버는 소스 Observable이 가장 최근에 발행한 항목(만약 아직 아무 값도 없다면 맨 처음 값이나 기본값)의 발행을 시작하며 그 이후 소스에 의해 발행된 항목들을 계속 발행

만약 오류 때문에 종료되면 아무런 항목도 배출하지 않고 발생한 오류를 그대로 전달

ReplaySubject

옵저버가 구독을 시작한 시점과 관계없이 Observable이 배출한 모든 항목들을 모든 옵저버에게 배출

AsyncSubject


무조건 complete되고 난 뒤 source observable의 마지막 데이터를 받는다.
만약 Observable이 아무 값도 배출하지 않으면 AsyncSubject 역시 아무 값도 배출하지 않음.

또한 맨 마지막 값을 뒤 이어 오는 옵저버에 전달하는데, 만약 Observable이 오류로 인해 종료될 경우 아무 항목도 배출하지 않고 발생한 오류를 그대로 전달

PublishSubject

구독 이후에 소스 Observable가 배출한 항목들만 옵저버에게 배출

만약, 소스 Observable이 오류 때문에 종료되면 아무런 항목도 배출하지 않고 소스 Observable에서 발생한 오류를 그대로 전달

0개의 댓글