[Combine] Publisher 요점만!
Publisher 종류
Future
결과적으로 1개의 값을 생산하고 종료 / 실패 여부 제공
Just
subscriber 들에게 딱 한 번씩만 output 을 방출하고 종료
IMO, 실패 결과 언급이 없는 것으로 봐서는 요청에 대한 결과 보다는 이벤트를 받는 것에 적합한 듯
Deffered
새 subscriber를 위한 퍼블리셔 생산을 위해 제공된 closure 를 실행하기전, 구독을 기다리는 퍼블리셔
Empty
결과값이 없고 선택적으로 즉시 종료(finish)를 할 수 있음
Fail
특정 에러와 함께 즉시 강제종료 (terminate)
Record
연속적인 인풋과 completion 이 들어오는 것을 허용 (각각의 subscriber 들에게 다시 재생해주기 위해)
AnyPublisher
다른 퍼블리셔를 감싸서 타입 삭제를 수행하는 struct
- Publisher 프로토콜의 구체적인 구현체
- 스스로 중요한 프로퍼티를 갖지 않음
- 업스트림 퍼블리셔에서 건너온 요소와 컴플리션을 그대로 넘겨준다 (pass through)
- API 경계선 외부로 노출하고 싶지 않은 세부사항을 갖는 타입의 퍼블리셔를 래핑(wrapping)할 때 사용
Subject
를AnyPublisher
로 감싸면 호출자는send(_:)
메소드 접근 불가- 퍼블리셔로
AnyPublisher
로 감싸기 위해eraseToAnyPublisher
사용
Published
속성으로 표시된 프로퍼티를 퍼블리싱 하는 타입
ObservableObject
프로토콜 참고
AnyCancellable
타입 삭제를 취소할 수 있는 객체로, 취소할 때 제공된 closure를 실행