[IOS] RxSwift에서 스레드를 변경하여 Observable을 처리하고 결과를 받을 수 있는 방법 observeOn
RxSwift에서 스레드를 변경하여 Observable을 처리하고 결과를 받을 수 있는 방법은 observeOn
연산자를 사용하는 것입니다. observeOn
연산자는 옵저버블이 이벤트를 생성하는 스레드와 구독자가 이벤트를 처리하는 스레드를 분리할 수 있도록 해줍니다.
아래는 RxSwift에서 observeOn
연산자를 사용하여 스레드를 변경하는 예제입니다:
import RxSwift
let disposeBag = DisposeBag()
Observable.just("Hello, World!")
.observeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.map { value -> String in
// 이 부분은 백그라운드 스레드에서 실행됨
print("Mapping on thread: \(Thread.current)")
return value.uppercased()
}
.observeOn(MainScheduler.instance)
.subscribe(onNext: { value in
// 이 부분은 메인 스레드에서 실행됨
print("Received on thread: \(Thread.current)")
print(value)
})
.disposed(by: disposeBag)`
위의 예제에서 observeOn
연산자를 사용하여 스레드를 변경하고 있습니다. observeOn
을 호출하여 .background
스레드로 스케줄링한 후, .map
연산자를 사용하여 백그라운드 스레드에서 실행될 로직을 정의합니다. 그리고 다시 observeOn
을 호출하여 MainScheduler.instance
로 스케줄링하여 결과를 메인 스레드에서 받을 수 있도록 합니다.
observeOn
을 사용하여 원하는 스레드로 Observable의 이벤트 처리를 변경할 수 있습니다. 다양한 스케줄러를 사용할 수 있으며, SerialDispatchQueueScheduler
, ConcurrentDispatchQueueScheduler
, MainScheduler
등이 있습니다. 필요에 따라 적절한 스케줄러를 선택하여 스레드를 변경할 수 있습니다.