Hot/ Cold Observable이란 무엇인가?
우선 RxSwift의 깃허브를 번역해 보겠다.
Hot/Cold 의개념은 별도의 타입이 아니다. 시퀀스의 속성중 하나로 생각하는 것이 쉽고 바른 생각이다.
ReactiveX.io에 나온 정의를 적어보도록 하겠다.
Observable은 시퀀스를 언제 발생하기 시작하죠? 이것은 Observable의 속성에 따라 다릅니다. Hot Observable은 만들어지자 마자 시퀀스에 신호를 보내기 시작합니다. 따라서 나중에 구독을 시작하는 Observer라든지 어떠한 Observer라도 중간부터 Observing을 시작할 수 있습니다. 반면에 “Cold” Observable은 Observer가 구독할때까지 기다렸다가 시퀀스에 신호를 보냅니다. 따라서 Cold Observable은 처음부터 전체의 시퀀스를 구독하는 것을 보증할 수 있습니다.
간단하게 정리를 해보자면
- Hot Observable
생성과 동시에 시퀀스에 신호를 보내는 ObservableObserver가 중간부터 신호를 받을 수 있음.
- Cold Observable
구독과 동시에 시퀀스에 신호를 보내는 Observable생성하더라도 시퀀스에 신호를 보내지 않음
Observer는 처음부터 모든 신호를 받을 수 있다고 보장함
[One More Step]
한발짝 더 다가가보자면Hot/Cold에 관련한 operater들을 설명해보도록 하겠다.
publish
Observable을 ConnectableObservable로 변환해 준다. 따라서 Observable의 속성이 Hot이 된다.refCount
hot속성을 갖고 있는 Observable의 레퍼런스(구독자)를 카운팅 한다.구독자가 제로(0)가 되면 Observable이 dispose된다.
replay
Observable을 ConnectableObservable로 변환해 준다. 따라서 Observable의 속성이 Hot이 된다.구독을 시작하면 발생했던 아이템을 처음부터 전부 반환해준다.
댓글 없음:
댓글 쓰기