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 Finish
DispatchQueue.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?