Hot vs Cold Observable 간략하게 이해하기

okstring·2021년 7월 22일
0

공식문서에서는 다음과 같이 나와있습니다.

When does an Observable begin emitting its sequence of items? It depends on the Observable. A “hot” Observable may begin emitting items as soon as it is created, and so any observer who later subscribes to that Observable may start observing the sequence somewhere in the middle. A “cold” Observable, on the other hand, waits until an observer subscribes to it before it begins to emit items, and so such an observer is guaranteed to see the whole sequence from the beginning.

Observable은 언제부터 일련의 항목을 방출하기 시작합니까? Observable에 따라 다릅니다. "Hot" Observable은 생성되자마자 항목을 방출하기 시작할 수 있으므로 나중에 Observable에 subscribes한 observer는 중간 어딘가에서 시퀀스를 관찰하기 시작할 수 있습니다. 반면에 "Cold" Observable은 observer가 항목을 방출하기 전에 구독할 때까지 대기하므로 관찰자는 처음부터 전체 시퀀스를 볼 수 있습니다.

Hot Observable

  • 생성고 동시에 방출하기 때문에 다른 구독자들에게 선택적으로 고려가 가능하다
  • 구독 시점부터 발행하는 값을 받는 걸 기본으로 한다
  • 마우스 이벤트, 키보드 이벤트, 시스템 이벤트에 주로 사용
  • 멀티태스킹이 포함
  • 구독 이전에는 연산 자원을 소모하지 않는다
  • 스트림을 분기시키는 성질을 가지고 있기 때문에 스트림의 분기가 필요한 경우 Hot Observable을 사용해야 합니다.

Cold observable

  • 구독하는 시점부터 이벤트를 생성하여 방출
  • 일반적인 웹 요청, 데이터베이스 쿼리 등이 사용되며 내가 요청하면 결과를 받는 과정을 거친다.
  • 스트림을 분기시키는 성질을 가지고 있지 않습니다. 따라서, Cold Observable을 여러번 Subscribe 하는 경우, 각각 별도의 스트림이 생성되고 할당되게 됩니다.

참고

http://reactivex.io/documentation/subject.html

https://taehyungk.github.io/posts/android-RxJava2-Cold-Hot-Observable-and-Subject/

https://jcsoohwancho.github.io/2019-10-20-RxSwift기초-Hot-vs-Cold-Observable/

profile
step by step

0개의 댓글