TIL(Today I Learned)
9월 30일(목)
학습내용
- RxSwift
- Subject vs Relay
- Subject는 Observer이면서 Observable로서 역할을 한다. 즉, 외부에서 발생된 값을 Observer로서 subscribe하고 있다가, Subject를 subscribe하는 다른 Observer에게 값을 전달한다.
- Relay는 Subject와 동일하지만, Complete이 없고 Error를 발생시키지 않는다는 차이점이 있다.
- Relay는 UI와 관련된 값을 다룰 때 사용한다. 왜냐하면 Subject는 Complete이나 Error로 인해 스트림이 종료되어 UI 갱신되지 않는 문제가 생길 수 있기 때문이다. Relay는 Complete이 없고 Error를 발생시키지 않기에 스트림이 종료되지 않아서, UI 갱신에 관련될 때 Subject 대신에 사용한다.
- Hot Observable vs Cold Observable
- Hot Observable은 생성되자마자 값들을 발생시킨다. 따라서 중간에 subscribe를 하면 subscribe 이전 시점에 발생된 값을 알 수 없다.
- Cold Observable은 구독이 시작되면 값들을 발생시킨다. 중간에 subscribe를 하더라도 subscribe 이전에 발생된 최초 값들부터 받게 된다.
- Single
- Observable과 유사하지만, Observable은 연속적인 값을 발생시키는 것에 비해 Single은 한개의 값을 발생시키거나 에러를 발생.
- Subject vs Relay
참고
- RxSwift #2 — Observable 과 Subject (+ Relay) 알아보기: https://okanghoon.medium.com/rxswift-2-observable-subject-relay-8fcd9b01913d
- Subject: http://reactivex.io/documentation/subject.html
- Subjects.md: https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Subjects.md#relays
- Subject/Relay를 언제써야할지 모르겠다구요?: https://youtu.be/N5EcLBzhZ64?list=PLYBpLzrmzdNR_eN4s9xthaDP6HYEBeLaj