반응형
안녕하세요 코찐입니다.
아래의 자료를 따라서 공부하고 있습니다.
https://www.raywenderlich.com/books/combine-asynchronous-programming-with-swift/v2.0
한 가지 API Publisher에 여러 Subscriber가 붙는 예제입니다.
let url = URL(string: "https://www.raywenderlich.com")!
let publisher = URLSession.shared
.dataTaskPublisher(for: url)
.map(\.data)
.multicast { PassthroughSubject<Data, URLError>() }
let subscription1 = publisher
.sink(receiveCompletion: { completion in
if case .failure(let err) = completion {
print("Sink1 Retrieving data failed with error \(err)")
}
}, receiveValue: { object in
print("Sink1 Retrieved object \(object)")
})
let subscription2 = publisher
.sink(receiveCompletion: { completion in
if case .failure(let err) = completion {
print("Sink2 Retrieving data failed with error \(err)")
}
}, receiveValue: { object in
print("Sink2 Retrieved object \(object)")
})
let subscription = publisher.connect()
원래는 sink로 구독이 활성화되면 publisher가 작업을 바로 수행하게 됩니다.
그러면 API를 2번 실행하게 되는데요...
multicast를 사용하면 API를 한번만 실행할 수 있도록 만들어줍니다.
반응형
'iOS > Combine' 카테고리의 다른 글
[Combine 책 정리] Chapter 11: Timers (0) | 2021.01.27 |
---|---|
[Combine 책 정리] Chapter 10: Debugging (0) | 2021.01.27 |
[Combine 책 정리] Chapter 7: Sequence Operators (0) | 2021.01.22 |
[Combine 책 정리] Chapter 6: Time Manipulation Operators (0) | 2021.01.19 |
[Combine 책 정리] Chapter 5: Combining Operators (0) | 2021.01.18 |