Danny의 iOS 컨닝페이퍼
article thumbnail
Published 2023. 3. 9. 14:55
[iOS/RxSwift] Hot & Cold Observable RxSwift

Hot & Cold Observable

Hot Observable

구독 여부와 상관없이 이벤트를 발생시킨다.

(구독하기 전부터 이미 element 방출)

 

즉, Observable의 이벤트 스트림은 이미 진행 중이고

구독(subscibe)하는 시점부터 이벤트를 통해 element를 방출합니다.

스트림(stream) : Observable이 방출하는 데이터 흐름

 

특징으로는

1. 여러 Observer들이 Observable 이벤트를 공유합니다.

2. 구독 이전 시점의 이벤트는 받을 수 없습니다.

 

대표적으로 Hot Observable을 사용하는 방법은

Subject가 있습니다.

 

 

Cold Observable

구독하기 전까지 아무런 이벤트도 발생하지 않는다.

(구독 시 element 방출)

 

구독(subscibe)을 기다리며 구독하는 순간

구독 이벤트를 통해 element를 방출합니다. (lazy 특성)

 

특징으로는 

1. Observer가 구독할 때마다 독립적인 이벤트 스트림이 생성됩니다.

즉, 이벤트 스트림을 처음부터 다시 생성하므로,

구독 순서와 상관없이 모든 이벤트를 받을 수 있습니다.

 

대표적으로 just, of, from와 같은 Observable은

Cold Observable처럼 동작합니다.

 

 

비유

간단히 비유를 하자면 이와 같습니다.

Hot Observable : Live Streaming

Cold Obsevable : VOD

 

그리고 Marble로 나타내면

 

Hot Observable

구독하는 시점에 따라서 얻게 되는 element가 다르다.

 

Cold Observable

어느 시점에서 구독을 하더라도 모든 element를 얻게 된다.

 

 

반응형
profile

Danny의 iOS 컨닝페이퍼

@Danny's iOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!