[RxSwift] - Subject

sun02·2022년 2월 10일
0

RxSwift

목록 보기
3/12

Subject

: Observable과 observer의 역할을 모두 수행합니다.

  • Observer이기에 하나 이상을 구독(subscribe)할 수 있고
  • Observable이기에 구독한 item을 재방출(reemit)하여 빠져나가게 하거나 새로운 item을 방출할 수도 있습니다.

1. PublishSubject

: 빈 상태로 시작하여 새로운 값만을 subscriber에 방출

구독(subscribe)한 이후의 모든 이벤트를 받습니다.

2. BehaviorSubject

: 하나의 초기값을 가진 상태로 시작하여, 새로운 subscriber에게 초기값/최신값 을 방출

publishSubject와 달리 구독 이전에 이벤트가 발생하였더라도
직전의 이벤트를 받습니다.

3. ReplaySubject

: 버퍼를 두고 초기화하며, 버퍼 사이즈 만큼의 값들을 유지하면서 새로운 subscriber에게 방출

구독을 방출된 이후에 하였더라도
버퍼사이즈(여기서는 marble 2개)만큼의 구독 이전 이벤트를 받습니다.
구독 이후 이벤트는 버퍼에 상관없이 모두 받음

4. AsyncSubject

: 소스 Observable의 마지막 값을 방출

소스 Observable이 완료된 이후에 마지막 값을 방출합니다.

만약 소스 Observable이 오류로 종료되었더라도
AsyncSubject는 오류를 받아 방출합니다.

출처 - ReactiveX 홈페이지

0개의 댓글