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를 얻게 된다.
'RxSwift' 카테고리의 다른 글
[iOS/RxSwift] Subject의 종류 (0) | 2023.03.09 |
---|---|
[iOS/RxSwift] Traits에 대하여 (0) | 2023.03.06 |
[iOS/RxSwift] Observable 연산자 (0) | 2023.03.06 |
[iOS/RxSwift] Observable, Subscribe 개념 및 사용 방법 (2) | 2023.03.03 |