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처럼 사용 가능