我想在我的 iOS 应用程序的后台线程中做一些繁重的工作,而不是在执行时卡住 UI。我尝试的是:
self.someDisposable = heavyLiftingFuncReturningObservable()
.subscribeOn(ConcurrentDispatchQueueScheduler(qos: .background))
.observeOn(MainScheduler.instance)
.subscribe(
onNext: { [weak self] image in
// update UI
},
onError: { ... }
)
为什么上面没有按预期工作以及如何让它工作?
最佳答案
我认为问题在于您对 .heavyLiftingFuncReturningObservable() 的实现,也就是说,事实上它显然开始在当前线程上工作,而不是等到被订阅并在后台调度程序上运行。解决方案是在 .heavyLiftingFuncReturningObservable() 函数内部使用 .deferred()。
关于ios - RxSwift — 不卡住 UI 的后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47202391/