링크: 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의 신규 구독자는 처음 방영분 부터 볼 수 있다. RxJS의 관점에서 설명하자면, Netflix는 신규 구독자가 생길때 마다 1화, 2화, 3화... 새로운 발행물들을 만들어 제공한다.
하지만 SBS는 다르다. 신규 구독자는 이미 방영된 1화를 볼 수가 없다. 그렇기 때문에 전부터 구독 중이던 구독자와 같은 흐름의 영상만 시청할 수 있다. RxJS의 관점에서 SBS는 모든 구독자가 같은 영상을 공유한다고 표현할 수 있을 것이다.
Subject는 Observable과 같이 사용할 수 있다. 성격이 다른 두 개를 같이 사용하는 상황이 어떤때인지 잘 모르겠다. chapter 3 부터 알려주신다고 하니 기다려 보자.
Subject의 종류
1. BehaviorSubject - 마지막 값을 저장 후 추가 구독자에게 발행
2. ReplaySubject - 마지막 N개 값을 저장 후 추가 구독자에게 발행
3. AsyncSubject - Complete 후의 마지막 값만 발행
'RxJS(Reactive X)' 카테고리의 다른 글
[RxJS] 실습 - 스마트한 키워드 검색창 만들기 (0) | 2023.01.16 |
---|---|
[Chapter#2] RxJS 연산자들 -ing (0) | 2023.01.13 |
[Chapter#1] Lesson 3. Operator 사용해보기 (0) | 2023.01.12 |
[Chapter#1] Lesson 2. Observer(구독자)에게 발행물 구독시키기 (0) | 2023.01.12 |
[Chapter#1] Lesson 1. Observable(스트림 생성기) 만들기 (5가지) (0) | 2023.01.12 |
댓글