본문으로 바로가기

Subject는 특수한 종류의 Observable이다.

뭐가 특별한가? 값을 여러 Observer에게 멀티캐스팅해줄 수 있는 류의 옵저버블이다.

쉽게 말해서 여러 값의 옵저버를 달 수 있다는 거다.

subject : darrengwon.tistory.com/1369?category=905593

 

[RxJS] Subject : BehaviorSubject, ReplaySubject, AsyncSubject

rxjs-dev.firebaseapp.com/guide/subject Subject는 특수한 종류의 Observable이다. 뭐가 특별한가? 값을 여러 Observer에게 멀티캐스팅해줄 수 있는 류의 옵저버블이다. 아래는 가장 간단하게 subject를 생성해..

darrengwon.tistory.com

 

 

multicast (deprecated) => connectable, connect, share

과거에서는 이렇게 사용했는데, deprecated 되었다.

const interval$ = interval(2000).pipe(tap((i) => console.log(`interval ${i}`)));
const multicatedInterval$ = interval$.pipe(multicast(() => new Subject()));

// connect하기
const connectedSub = multicatedInterval$.connect();

// subscribe 2개 이상 할 수 있음. 이제 subject임
const subOne = multicatedInterval$.subscribe(obs);
const subTwo = multicatedInterval$.subscribe(obs);

setTimeout(() => {
  // 이 구독을 꺼봤자 connect 구독이 살아 있음. connect 구독을 꺼야함.
  // subOne.unsubscribe();
  // subTwo.unsubscribe();
  connectedSub.unsubscribe();
}, 3000);

 

In version 7, the multicasting APIs were simplified to just a few functions:

그리고선 리팩토링하는 사례들을 나열해주는데, 여기는 그냥 직접 문서를 보는게 빠릅니다. rxjs.dev/deprecations/multicasting

 

 

Share

Generate new multicast Observable from the source Observable value

multicate가 deprecated된 후에는 refCount 대신 share를 쓰라고 되어 있습니다.

Where multicast is used in conjunction with refCount, it can be replaced with share.

const source = interval(1000).pipe(share());

source.subscribe((x) => console.log("subscription 1: ", x));
source.subscribe((x) => console.log("subscription 2: ", x));

 

... 어... 솔직히 이 섹션에 해당하는 오퍼레이터를 많이 사용해보지 않아서, 앞으로 사용하게 되면 추가적으로 정리해보겠다.


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체