Subscriber와 Subscription

Subscriber

Subscriber는 Publisher에서 나오는 요소(element)의 흐름을 받습니다.

값을 받기만 하는 소비자의 역할입니다. Publisher(값 방출)와 Subscriber(값 받음)를 합치면 RxSwift의 Subject(값을 주고 받음) 의 역할과 동일하게 됩니다.

Untitled

Publisher에서는 Output, Failure가 있듯이, Subscriber에는 Input, Failure가 있습니다.

Subscriber.Input Subscriber.Failure
Subscriber가 받는 값의 타입 Subscriber가 받을 수도 있는 에러의 타입
Int Never (에러가 발생할 일이 없음)

Subscription

Protocol

Subscriber는 다음과 같이 구현되어 있습니다.

@available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
public protocol Subscriber : CustomCombineIdentifierConvertible {
    associatedtype Input
    associatedtype Failure: Error
    
    func receive(subscription: Subscription)
    func receive(_ input: Self.Input) -> Subscribers.Demand
    func receive(completion: Subscribers.Completion<Self.Failure>
}