Schedulers
是RxSwift实现多线程的核心。它主要用于控制任务在哪个线程或队列运行
平时的开发中,网络请求都是在后台执行的,获取到数据之后,再在主线程更新UI
let rxData: Observable<Data> = ...
rxData
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .userInitiated))
.observeOn(MainScheduler.instance)
.subscribe(onNext: { [weak self](data) in
// 更新UI
})
.disposed(by: disposeBag)
- 用
subscribeOn
来决定数据序列的构建函数在哪个 Scheduler 上运行。 - 由于获取 Data 需要花费很长的时间,所以用 subsribeOn 切换到 后台Scheduler 来获取 ,这样就可以避免阻塞主线程。
- 用 observeOn 来决定在哪个 Scheduler 监听这个数据序列。 通过 observerOn 方法切换到主线程来监听并处理结果。
- MainScheduler: 代表主线程,如果执行和UI相关的任务,就需要切换到该 Scheduler 运行
- ConcurrentDispatchQueueScheduler:抽象的并行DispatchQueue。如果需要执行一些并发任务,可以切换到这个 Scheduler执行
网友评论