티스토리 뷰

Tech/Combine

Publisher, Subscriber, Operator

Ellie Kim 2020. 3. 3. 17:40

Combine 프레임워크의 핵심 컨셉들은 

Publisher

Subscriber

Operator이다. 

 

Publisher

values와 error들이 생성되는 방법을 정의한다. 

값 타입이다.

subscriber의 등록을 가능하게 한다.

 

publisher은 프로토콜이다.

associatedtype Output과 Failure로 이루어져 있으며,

func receive<S: Subscriber>(_ subscriber: S) where S.Input == Output, S.Failure == Failure이 있다.

 

Subscriber

values와 completion을 받는다.

레퍼런스 타입이다.

 

Subscriber은 프로토콜이다.

associatedtype Input과 Failure로 이루어져 있으며,

func receive(subscription: Subscription)

func receive(_ input: Input) -> Subscriber.Demand

func reveive(completion: Subscribers.Completion<Failure>)이 있다.

 

또한 Publisher과 Subscriber은 서로 소통이 가능하다.

Subscriber의 Input타입과 Publisher의 Output타입이 동일해야 한다.

 

Operator

Publisher을 채택한다.

values를 변경하기 위한 행동을 설명한다.

Publisher을 구독한다. (upstream)

결과를 Subscriber에게 보낸다. (downstream)

값 타입이다.

 

 

예를 들어

Publisher은 송신국이라 치고,

Subscriber은 라디오라친다.

 

우리는 날씨에 대한 정보를 받아오는 작업을 처리한다고 가정한다.

 

Subscriber은 날씨에 대한 정보를 받기 위해 주파수를 맞춰준다.

Publisher은 날씨 데이터를 보낸다.

 

날씨는

🌞24℃

🌞25℃ 

🌞21℃ 

이런 식으로 전송된다.

 

우리가 필요한 것은 온도만 필요하고 🌞는 필요하지 않는다.

이때 Operator을 통해 필요한 데이터만 걸러낸다.

Subscriber은 필요한 데이터 24℃ 만을 받게 된다.

 

즉 Publisher - Operator - Subscriber의 상호작용으로 이루어진다.

'Tech > Combine' 카테고리의 다른 글

Combine provides a declarative Swift API . . .  (0) 2020.03.03
Combine 시작하기  (0) 2020.03.03
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함