본문 바로가기
개발/Rx프로그래밍

[Rx프로그래밍] 뜨거운(Hot) Observable Vs 차가운(Cold) Observable에 대해

by 핸디(Handy) 2020. 4. 22.

Observable 에는 두가지 종류의 Hot Cold 가 있습니다.

차가운 Observable는 선언하고 just( ), fromIteralbe( ) 함수를 호출해도 옵서버가 subscribe( ) 함수를 호출하여 구독하지 않으면 데이터를 발행하지 않습니다. 그래서 불러주지 않으면 아무것도 안한 시니컬한 친구다 라고 이해했습니다.

뜨거운 Observable는 구독자가 존재 여부와 관계없이 데이터를 발행하는 Observable입니다. 따라서 여러 구독자가 존재할 수 있습니다. 그래서 안불러줘서 달라붙을 수 있는 핫한 친구다 라고 이해했습니다.

여기서 차이점은 차가운,뜨거운 Observable의 데이터 발행이 완성도? 에 있습니다.

호출되면 데이터를 발행하는 차가운 Observable의 경우 호출되었기에 구독자는 처음부터 데이터를 발행할 수 있습니다.

하지만 뜨거운 Observable의 경우, 구독한 시점부터 값을 받습니다. 간단하게 중간에 끼어드는 상황에서 일어나는 일입니다.

차가운 Observable의 예로는 웹 요청, DB 쿼리, 파일 읽기 등이 있습니다. 앞서 설명드렸다시피 요청, 읽기 등의 작업은 처음부터 끝까지 완료되는 경우가 대부분입니다.

뜨거운 Observable의 예로는 마우스 이벤트, 키보드 이벤트 등이 있습니다. 이벤트의 경우 항상 사용자가 어떤 작업을 하고 있다면 계속 발생합니다. 하지만 구독자는 특정 시점의 이벤트만 처리하기를 원하기 때문에 처음 호출된 이벤트를 반드시 구독자가 처리한다는 보장이 없습니다.

 

 

댓글