hot, cold observable 의 이해

Jin·2020년 12월 23일
0

왜 조사하는가?

Redux-observable 의 테스트를 간결하게 만들기 위해서 조사한다.
marble 테스트에 hot, cold observable 의 개념이 활용된다.

요약

hot observable: 데이터가 observable 밖에서 생성된다.
cold observable: 데이터가 observable 내에서 생성된다.

예제

비교 포인트

Observable 의 여러명의 구독자는 동일한 값을 얻을까?

hot observable

const random = Math.random();

const observable = Rx.Observable.create((observer) => {
  observer.next(random);
});

// 아래 두개는 같은 값을 구독한다.

observable.subscribe((data) => {
  console.log(data);
});

observable.subscribe((data) => {
  console.log(data);
});

cold observable

const observable = Rx.Observable.create((observer) => {
  observer.next(Math.random());
});

// 아래 두개는 다른 값을 구독한다.

observable.subscribe((data) => {
  console.log(data);
});

observable.subscribe((data) => {
  console.log(data);
});

정리

hot observable 은 데이터가 외부에서 생성되므로, 구독자가 모두 같은 값을 얻는다.
cold observable 은 데이터가 내부에서 생성되므로, 구독자마다 다른 값을 얻는다.

자료 출처

https://medium.com/@luukgruijs/understanding-hot-vs-cold-observables-62d04cf92e03#:~:text=An%20Observable%20is%20cold%20when,share%20data%20between%20multiple%20subscribers.&text=subscriber%20or%20not.-,If%20there%20is%20no%20subscriber%20when%20the%20data%20is%20being,the%20data%20is%20simply%20lost.

See also. marble test https://rxjs-dev.firebaseapp.com/guide/testing/internal-marble-tests

0개의 댓글