Subscriber는 Publisher에서 나오는 요소(element)의 흐름을 받습니다.
값을 받기만 하는 소비자의 역할입니다. Publisher(값 방출)와 Subscriber(값 받음)를 합치면 RxSwift의 Subject(값을 주고 받음)
의 역할과 동일하게 됩니다.
Publisher
에서는 Output, Failure가 있듯이, Subscriber
에는 Input, Failure가 있습니다.
Subscriber.Input |
Subscriber.Failure |
---|---|
Subscriber가 받는 값의 타입 | Subscriber가 받을 수도 있는 에러의 타입 |
Int |
Never (에러가 발생할 일이 없음) |
Publisher
에서 새로운 값이 발생했을 때 Publisher
와 Subscriber
를 중재해 Subscriber
가 요청한 값보다 더 많은 값을 받지 않도록 보장해줍니다.Subscribers
의 유지 및 해제를 관리합니다.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>
}