Publishers.HandleEvents
์ ๋ค๋ฆญ ๊ตฌ์กฐ์ฒด | Publisher์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํน์ ํด๋ก์ ๋ฅผ ์ํํ๋ Publisher
์ด๋์ ๋ผ์ด์ ๋ ์ฌ์ฏ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ค.
upstream: ์์์ ํ๋ฅด๋ PublisherreceiveSubscription: Publisher๊ฐ ์์ Publisher๋ก๋ถํฐ ๊ตฌ๋ ์ ์ ๋ฌ๋ฐ์ ๋ ์ํํ ํด๋ก์ . ๊ธฐ๋ณธ๊ฐ์ nilreceiveOutput: Publisher๊ฐ ์์ Publisher๋ก๋ถํฐ ๊ฐ์ ์ ๋ฌ๋ฐ์ ๋ ์ํํ ํด๋ก์ . ๊ธฐ๋ณธ๊ฐ์ nilreceiveCompletion: Publisher๊ฐ ์์ Publisher๋ก๋ถํฐ ์๋ฃ๋ฅผ ์ ๋ฌ๋ฐ์ ๋ ์ํํ ํด๋ก์ . ๊ธฐ๋ณธ๊ฐ์ nilreceiveCancel: ํ์ ๋ฆฌ์๋ฒ๊ฐ ๋ฐํ์ ์ทจ์ํ ๋ ์ํํ ํด๋ก์ . ๊ธฐ๋ณธ๊ฐ์ nilreceiveRequest: Publisher๊ฐ ๋ ๋ง์ ์์๋ฅผ ์ํด ์์ฒญ์ ์ ๋ฌ๋ฐ์ ๋ ์ํํ ํด๋ก์ . ๊ธฐ๋ณธ๊ฐ์ nil
์คํธ๋ฆผ์ ์๋ช ์ฃผ๊ธฐ ๋์ ๋ฐ์ํ๋ ์ฌ๋ฌ ์ด๋ฒคํธ์์ ์คํํ ์ก์ ์ ๋ฑ๋กํ๋ค.
ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ค.
Publisher์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ดํดํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ค.
sink๋ Subscriber์ ๋ํ ์คํผ๋ ์ดํฐ๊ณ , handleEvents๋ Publisher์ ๋ํ ์คํผ๋ ์ดํฐ๋ค.
sink๋ Subscriber์ ๊ตฌ๋ ์ ์ํด ์ต์ข ์ ์ผ๋ก ๋ฐํ๋ ์ด๋ฒคํธ์ ๋ํด ๋์ํ๋ค.handleEvents๋ ๊ตฌ๋ ์ ์ํด ์์ Publisher๊ฐ ๋ฐํํ๋ ์ด๋ฒคํธ์ ๋ํด ๋์ํ๋ค.
handleEvents ์คํผ๋ ์ดํฐ์ ๊ด๋ จ์ด ์๋ค.
// Publishers.HandleEvents Publisher
Publishers
.HandleEvents(upstream: Just(Void()),
receiveSubscription: { _ in print("Combine HandleEvents ReceiveSubscription") },
receiveOutput: { print("Combine HandleEvents ReceiveOutput") },
receiveCompletion: { _ in print("Combine HandleEvents ReceiveCompletion") },
receiveCancel: { print("Combine HandleEvents ReceiveCancel") },
receiveRequest: { _ in print("Combine HandleEvents ReceiveRequest") })
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine HandleEvents Error")
case .finished:
print("Combine HandleEvents Finish")
}
}, receiveValue: {
print("Combine HandleEvents")
})
.store(in: &cancellables)
// handleEvents Operator
Just(Void())
.handleEvents(receiveSubscription: { _ in print("Combine HandleEvents ReceiveSubscription") },
receiveOutput: { print("Combine HandleEvents ReceiveOutput") },
receiveCompletion: { _ in print("Combine HandleEvents ReceiveCompletion") },
receiveCancel: { print("Combine HandleEvents ReceiveCancel") },
receiveRequest: { _ in print("Combine HandleEvents ReceiveRequest") })
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine HandleEvents Error")
case .finished:
print("Combine HandleEvents Finish")
}
}, receiveValue: {
print("Combine HandleEvents")
})
.store(in: &cancellables)
// Combine HandleEvents Receive Request
// Combine HandleEvents Receive Subscription
// Combine HandleEvents Receive Output
// Combine HandleEvents
// Combine HandleEvents Receive Completion
// Combine HandleEvents Finish๊ฒฐ๊ณผ๋ฅผ ํตํด Publisher๋ ์๋ฌ๋ฅผ ๋ด์ง ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ๋์ํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
Publisher : Receive Request
Publisher : Receive Subscription
Publisher : Receive Output
Subscriber : Receive Value
Publisher : Receive Completion
Subscriber : Receive Finished
RxSwift
do ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
ReactiveSwift
on ์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค.
์ฐธ๊ณ
Last updated
Was this helpful?