RxSwift Basic 4탄

Eddy📱·2022년 8월 19일
0

RxSwift

목록 보기
4/4
post-thumbnail

Hot Observable vs Cold Observable

먼저 두 Observable의 차이점은 언제 방출을 시작하냐에 달려 있다

Hot Observable는 이 Observable이 만들어지자마자 방출시작한다.

그래서 만약에 중간에 어떤 observer가 이것을 구독하게 되면 sequence의 중간에서 시작하게 된다.
그리하여 앞에서 방출했던 것을 받을 수 없다.

Hot Observable는 각 리소스에 대해 공유가 가능하다.

예를 들어 Timer, Subject, Publish . Multicast . Connect , Replay 등 Subject타입이 이곳에 속한다.

공식문서

반면에 Cold Observable는 방출을 시작하기 전에 observer가 구독하기를 기다린다. 그리고 구독을 시작하면 그때서부터 방출을 시작한다.
그렇기에 시작부터 전체의 sequence를 볼 수 있도록 보장한다.

Cold Observable는 구독하는 즉시 이벤트가 발생되므로 Observer들이 다 다른 인스턴스들을 공유하게 된다.

예를 들어 Single, just, of 가 있다. 보통 HTTP 요청으로 Observable를 생성해서 사용하는 경우가 대표적인 Cold Observable이다.

사용예시

꼬리 질문

각각 사용할 수 있는 예시를 들어주세요.

예를 들어 Hot Observable는 실시간 방송을 볼 수 있다. 방송에 중간에 들어가면 처음부터 볼 수 있는 것이 아니라 중간부터 볼 수 있다. 이처럼 중간부터 볼 수 있는 것을 이야기한다.

개발의 입장에서 생각한다면 Timer를 생각할 수 있다. 앱을 진입했을 때 타이머 관련 로직이 있는 경우 처음부터 보여주는 것이 아니라 현재 앱 진입하고 보이는 구독 시점에서부터 타이머에서 남은 시간을 보여준다.

Cold Observable는 넷플릭스가 있다. 넷플릭스는 구독한 시점부터 방출하기 시작하므로 처음부터 볼 수 있다. 또한 각각 다른 인스턴스를 공유하므로 다른 사람과 별개의 Observer로 한다.

profile
Make a better world

0개의 댓글