<aside>
📌 목차
</aside>
🔑 Key points
시간의 흐름에 따른 값의 흐름 를 모델링한 것 = Publisher
- Subscriber 는 Publisher 에서 나오는 값을 구독할 수 있다.
- 각 타입의 Input & Failure = Ouput & Failure 가 일치해야한다
- publisher 구독을 위해 제공하는 두가지 API
sink(_: _:)
assign(to: on:)
- Subscriber 는 value 의 demand 값을 값을 전달받을 때마다 증가시킬수있다.
- 하지만 감소시킬수는 없다.
- Subscriber 는 demand 에 해당하는 값 개수만큼만 받는다. (completion 포함)
- 각각의 subscription 을 cancel() 을 통해 취소시킬수 있다.
- 자원 정리 및 사이드 이펙트를 더이상 바라지 않는 경우
- rxswift 의 dispose() 와 같음
AnyCancellable 컬렉션에 구독 토큰을 저장하여 deinit 시 자동으로 구독취소되도록 관리할수 잇다.
- RxSwift 의 DisposeBag 과 같음
- Future 는 Rx 의 Single 과 유사함
- Subjects 는 Rx 의 Subejct 와 동일하다
- 비동기적으로 복수개의 값을 옵저버에게 전달할 수 있다.
- 값 한개를 저장하고 있을 수도 있다.
- CurrentValueSubject vs BehaviorSubject
- Type erasure 를 통해 불필요한 추가 세부사항에 접근하는 것을 방지할 수 있다.
print() 오퍼레이터를 사용해서 콘솔에서 이벤트 로그를 볼 수 있다.
Hello Publisher
- 컴바인은
Publisher 라는 프로토콜을 제공
Publisher 요구사항
- 시간에 따른 값들의 시퀀스를 한개 이상의 구독자에게 전달할 수 있어야함
- 퍼블리셔를 구독하는 것은 NotificationCenter 을 통해 관심있는 이벤트를 구독하는 것과 유사
- A publisher emits two kinds of events:
- Values, also referred to as elements.
- A completion event. ( 단 한개!! )
- which can either be a normal completion event or an error
Hello Subscriber