RxSwift 노트 - 스케줄러
2224 단어 iOSSwiftRxSwift 노트
스케줄러(Schedulers)는 RxSwift가 다중 스레드를 실현하는 핵심 모듈로 주로 작업이 어느 스레드나 대기열에서 실행되는지 제어하는 데 사용된다.
RxSwift
중 몇 가지Scheduler
CurrentThreadScheduler
: 현재 라인Scheduler
을 나타낸다.(기본값으로 사용) MainScheduler
: 주선을 나타낸다.UI와 관련된 작업을 수행하려면 Scheduler로 전환해야 합니다.SerialDispatchQueueScheduler
: GCD의 직렬 대기열을 봉인합니다.만약 우리가 직렬 작업을 수행해야 한다면, 이 Scheduler
로 전환해서 실행할 수 있습니다.ConcurrentDispatchQueueScheduler
: GCD의 병렬 대기열을 봉인합니다.만약 우리가 병렬 작업을 수행해야 한다면, 이 Scheduler
로 전환해서 실행할 수 있습니다.OperationQueueScheduler
: 봉인NSOperationQueue
.RxSwift는
subscribeOn
및 observeOn
를 사용하여 스레드 전환을 수행합니다.subscribeOn()
백그라운드에서 네트워크 요청을 시작한 다음 데이터를 분석하고 마지막으로 메인 라인에서 페이지를 갱신합니다
시스템 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)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.