본문 바로가기
RxJS(Reactive X)

[Chapter#1] Lesson 4. 내맘대로 발행하는 Subject

by 찬찬2 2023. 1. 12.

링크: https://www.yalco.kr/@rxjs/1-4/

 

 

흠... Subject와 Observable의 차이에 대해 설명하고 Subject의 종류에 간단히 설명하셨다.

그런데 본격적인 사용법은 chapter 3 부터 시작하신다고 한다...

 

  Observable Subject
발행 시점 누가 구독을 시작했을때 개발자가 원하는 때에
발행 데이터의 상태공유 개별적(독립적) 공유

 

차이점은 위 표로 간단하게 설명할 수 있을 것 같다.

 

const subject = new Subject()
const obs$ = interval(1000)

obs$.subscribe(subject)

subject.subscribe(x => console.log('바로구독: ' + x))
setTimeout(_ => {
    subject.subscribe(x => console.log('3초 후 구독: ' + x))
}, 3000)
setTimeout(_ => {
    subject.subscribe(x => console.log('5초 후 구독: ' + x))
}, 5000)
setTimeout(_ => {
    subject.subscribe(x => console.log('10초 후 구독: ' + x))
}, 10000)

 

Netflix는 Observable, SBS는 Subject

 

Netflix의 신규 구독자는 처음 방영분 부터 볼 수 있다. RxJS의 관점에서 설명하자면, Netflix는 신규 구독자가 생길때 마다 1화, 2화, 3화... 새로운 발행물들을 만들어 제공한다.

하지만 SBS는 다르다. 신규 구독자는 이미 방영된 1화를 볼 수가 없다. 그렇기 때문에 전부터 구독 중이던 구독자와 같은 흐름의 영상만 시청할 수 있다. RxJS의 관점에서 SBS는 모든 구독자가 같은 영상을 공유한다고 표현할 수 있을 것이다.

 

Subject는 Observable과 같이 사용할 수 있다. 성격이 다른 두 개를 같이 사용하는 상황이 어떤때인지 잘 모르겠다. chapter 3 부터 알려주신다고 하니 기다려 보자.

 

Subject의 종류

1. BehaviorSubject -  마지막 값을 저장 후 추가 구독자에게 발행

 

2. ReplaySubject - 마지막 N개 값을 저장 후 추가 구독자에게 발행

const subject = new ReplaceSubject(2)


3. AsyncSubject - Complete 후의 마지막 값만 발행

댓글