Publishers.ReceiveOn
μ λ€λ¦ ꡬ쑰체 | νΉμ μ€μΌμ€λ¬μμ μλμ νλ₯΄λ Subscriberμκ² μμλ₯Ό μ λ¬νλ Publisher
μ΄λμ λΌμ΄μ λ μΈ κ°μ μΈμλ₯Ό μꡬνλ€.
upstream: μμμ νλ₯΄λ Publisherscheduler: μμΌλ‘ 체μΈμ΄ λμν μ€μΌμ€λ¬options: μ€μΌμ€λ¬μ μ΅μ RunLoopμ κ²½μ° μ€μΌμ€λ¬ μ΅μ μ μ§μνμ§ μλλ€.DispatchQueueμ κ²½μ°DispatchQoS,DispatchWorkItemFlags,DispatchGroupλ±μ μ μνμ¬ μ€μΌμ€λ¬ μ΅μ μ μ§μ ν μ μλ€.
μ΄ μ½λλ₯Ό μμ±ν νμ 체μΈμ λͺ μν μ€μΌμ€λ¬μμ λμνκ² λλ€.
Combineμ Scheduler νλ‘ν μ½μ μ μνλ©°, OperationQueue, DispatchQueue, RunLoop λ±μ΄ μ΄ νλ‘ν μ½μ μ±ννλ€.
receive μ€νΌλ μ΄ν°μ κ΄λ ¨μ΄ μλ€.
// Publishers.ReceiveOn Publisher
Publishers.ReceiveOn(upstream: Just(Void()), scheduler: DispatchQueue.main, options: nil)
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine ReceiveOn Error")
case .finished:
print("Combine ReceiveOn Finish")
}
}, receiveValue: {
print("Combine ReceiveOn")
})
.store(in: &cancellables)
// receive Operator
Just(Void())
.receive(on: DispatchQueue.main)
.sink(receiveCompletion: { completion in
switch completion {
case .failure:
print("Combine ReceiveOn Error")
case .finished:
print("Combine ReceiveOn Finish")
}
}, receiveValue: {
print("Combine ReceiveOn")
})
.store(in: &cancellables)
// Combine ReceiveOn
// Combine ReceiveOn FinishDispatchQueue.mainμμ λμνλλ‘ μ€μΌμ€λ¬λ₯Ό λͺ
μν΄ μ£ΌμμΌλ―λ‘ ν΄λΉ μ½λκ° λͺ
μλ μ΄νμ λμμ λ©μΈ μ€λ λμμ μ΄λ£¨μ΄μ§κ² λλ€.
RxSwift
observeOn μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
Observable.just(Void())
.observeOn(MainScheduler.instance)
.subscribe(onNext: {
print("RxSwift ReceiveOn")
}, onError: { _ in
print("RxSwift ReceiveOn Error")
}, onCompleted: {
print("RxSwift ReceiveOn Finish")
})
.disposed(by: disposeBag)ReactiveSwift
observe μ€νΌλ μ΄ν°λ₯Ό μ¬μ©νμ¬ κ΅¬νν μ μλ€.
SignalProducer(value: Void())
.observe(on: UIScheduler())
.start { event in
switch event {
case .value:
print("ReactiveSwift ReceiveOn")
case .failed:
print("ReactiveSwift ReceiveOn Error")
case .completed:
print("ReactiveSwift ReceiveOn Finish")
default:
break
}
}μ°Έκ³
Last updated
Was this helpful?