RxSwift 노트 - 스케줄러

스케줄러(Schedulers)
스케줄러(Schedulers)는 RxSwift가 다중 스레드를 실현하는 핵심 모듈로 주로 작업이 어느 스레드나 대기열에서 실행되는지 제어하는 데 사용된다.RxSwift 중 몇 가지Scheduler
  • CurrentThreadScheduler: 현재 라인Scheduler을 나타낸다.(기본값으로 사용)
  • MainScheduler: 주선을 나타낸다.UI와 관련된 작업을 수행하려면 Scheduler로 전환해야 합니다.
  • SerialDispatchQueueScheduler: GCD의 직렬 대기열을 봉인합니다.만약 우리가 직렬 작업을 수행해야 한다면, 이 Scheduler 로 전환해서 실행할 수 있습니다.
  • ConcurrentDispatchQueueScheduler: GCD의 병렬 대기열을 봉인합니다.만약 우리가 병렬 작업을 수행해야 한다면, 이 Scheduler 로 전환해서 실행할 수 있습니다.
  • OperationQueueScheduler: 봉인NSOperationQueue.

  • RxSwift는 subscribeOnobserveOn를 사용하여 스레드 전환을 수행합니다.
    subscribeOn()
  • 데이터 서열의 구축 함수를 어느 Scheduler에서 실행할지 결정
  • observeOn()
  • 이 데이터 서열을 감청할 Scheduler를 결정합니다
  • 샘플 사용
    백그라운드에서 네트워크 요청을 시작한 다음 데이터를 분석하고 마지막으로 메인 라인에서 페이지를 갱신합니다
    시스템 GCD를 사용하여 구현
    //         
    DispatchQueue.global(qos: .userInitiated).async {
        let data = try? Data(contentsOf: url)
        //          
        DispatchQueue.main.async {
            self.data = data
        }
    }

    RxSwit을 사용한 구현
    let rxData: Observable = ...
    
    rxData
        .subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated)) //       
        .observeOn(MainScheduler.instance)  //             
        .subscribe(onNext: { [weak self] data in
            self?.data = data
        })
        .disposed(by: disposeBag)

    좋은 웹페이지 즐겨찾기