rxSwift

[rxSwift] Observable 에 대한 이해

웰코발 2022. 10. 18. 23:50

Finite Observable

  • Element을 방출한 뒤, 성공 또는 에러를 통해 종료되는 Observable
  • 파일을 다운로드하는 일련의 시퀀스
  • 시간에 흐름에 따라서 다운로드 시작

 

Infinite Observable

  • 무한한 시퀀스 즉 Observable
  • UI 이벤트는 무한하게 관찰할수 있는 시퀀스 (rxCocoa, binding)

 

Hot Observable

  • 뜨거워서 생성되자마자 이벤트를 방출
  • 나중에 구독한 Observer는 구독 시점의 Observable 중간부분부터 구독할 수 있음
  • 여러 Observer들이 동일한 Observable을 구독하면, 동일한 스트림의 이벤트 공유 가능 (Multicast)
  • Subject를 사용하면 Cold Observable을 Hot Observable로 변환할 수 있음
  • 마우스, 키보드, 시스템 이벤트 등이 주로 사용되며 멀티태스킹도 포함된다
  • ex) Timer, Subject, UIEvent, Subject타입 등
  • Subject타입 : PublishSubject, BehaviorSubject, ReplaySubject 등

 

Cold Observable

  • 일반적인 Observable 형태임.
  • Observer가 구독하기 전까지 이벤트를 방출하지 않고 기다림
  • 처음부터 끝까지의 이벤트 스트림을 볼 수 있음
  • 여러 Observer들이 동일한 Observable을 구독하면, 각각 별도의 스트림이 생성되고 할당됨. 즉 동일한 스트림 이벤트 공유 불가능. (Unicast)
  • 일반적인 웹 요청, DB 쿼리 등이 사용되며 내가 요청하면 결과를 받는 과정을 거친다
  • ex) Single, just, of, HTTP 요청 (웹 요청), 데이터베이스 쿼리 등등
  • ReplaySubject를 통해 Hot Observable을 Cold Observable처럼 사용 가능