Back pressure
Combine은 구독자가 데이터의 흐름을 제어하도록 설계되어 있습니다. 그래서 구독자는 파이프라인에서 처리가 발생하는 시기와 대상도 제어합니다. 구독자가 얼마나 많은 정보를 원하거나 수용할 수 있는지에 대한 정보를 제공함으로써 파이프라인 내에서 처리를 주도한다는 것을 의미합니다. 이러한 요청은 구성된 파이프라인을 통해 전파되며 각 Operator는 차례대로 데이터 요청을 수락하고 연결된 Publisher에게 정보를 요청합니다.
이 것을 백 프레셔 라고 불리는 Combine의 기능이라고 합니다!
파이프라인이 취소되면 해당 파이프라인은 다시 시작되지 않습니다. 취소된 파이프라인 대신 새로운 파이프라인을 만들어야 합니다.
생명주기(Life Cycle)
1. 구독자가 게시자에게 연결되면 구독자의 호출로 시작됩니다. .subscribe(_: Subscriber
2. 게시자는 차례대로 구독을 호출을 확인합니다. receive:subscription: Subscription
3. 구독이 승인된 후 구독자는 값을 요청합니다 request(_: Demand)
4. 게시자가 값이 있다면 값을 보내게 됩니다. 게시자는 요청 한 양보다 더 많은 값을 줄 수 없습니다. receive(_: Input)
5. 구독이 완료된 후 언제든지 구독자는 다음과 같이 구독을 취소할 수 있습니다. .cancel()
6. 게시자는 선택적으로 완료가 되었다는것을 보냅니다. 정상적인 종료일 수도 있고 오류 유형을 알려주는 완료일 수도 있습니다. 취소된 파이프라인은 완료를 보내지 않습니다. receive(completion:)
'ios > Combine' 카테고리의 다른 글
Swift - Combine의 Publisher 알아보기 Just, Future, Fail, Empty, Deferred, Sequence (0) | 2022.02.08 |
---|---|
Swift - Combine 요약 (Publisher, Operator 종류) (0) | 2022.02.04 |
SwiftUI - Combine (2) 핵심 개념 (Publisher, Subscriber, Operator, Subject) (0) | 2022.01.20 |
SwiftUI - Combine (1) 소개 Combine을 사용하는 이유 (0) | 2022.01.18 |