swift – 订阅和观察的顺序是否重要?
发布时间:2020-12-14 05:19:52 所属栏目:百科 来源:网络整理
导读:我有点困惑,你可以称之为订阅和观察方法的可观察的顺序.我读了几个帖子,一个人说没关系,只是在他的例子中使用的东西,而其他人说这很重要.所以这里是我的问题: 例如: self.remoteService.rxGetAllLanguages() .observeOn(MainScheduler.instance) .subscrib
我有点困惑,你可以称之为订阅和观察方法的可观察的顺序.我读了几个帖子,一个人说没关系,只是在他的例子中使用的东西,而其他人说这很重要.所以这里是我的问题:
例如: self.remoteService.rxGetAllLanguages() .observeOn(MainScheduler.instance) .subscribeOn(ConcurrentDispatchQueueScheduler(globalConcurrentQueueQOS: .Background)) .subscribe({ e in switch e { case .Next(let element): case .Error(let e): DDLogError("Error in (e)") case .Completed: DDLogDebug("Completed") } } ).addDisposableTo(self.disposeBag) 是这样的: self.remoteService.rxGetAllLanguages() .subscribeOn(ConcurrentDispatchQueueScheduler(globalConcurrentQueueQOS: .Background)) .observeOn(MainScheduler.instance) .subscribe({ e in switch e { case .Next(let element): case .Error(let e): DDLogError("Error in (e)") case .Completed: DDLogDebug("Completed") } } ).addDisposableTo(self.disposeBag) 如果我正确地理解他们不同的机制.第一个在主线程上做所有的工作,第二个在另一个线程上执行所有的工作,然后发回到主线程.但是我肯定肯定有人可以为我清除这个吗?
你在一个链中称为subscribeOn()并不重要.在哪里调用observeOn()是重要的.
subscribeOn()告诉整个链,哪个线程开始处理.你应该只链接一次.如果您再次将其称为低级流,则不起作用. observeOn()导致在其下发生的所有操作在指定的调度程序上执行.每个流可以多次调用它,以便在不同的线程之间移动. 举个例子: doSomethingRx() .subscribeOn(BackgroundScheduler) .doAnotherThing() .observeOn(ComputationScheduler) .doSomethingElse() .observeOn(MainScheduler) .subscribe(//...) > subscribeOn导致在BackgroundScheduler上调用doSomethingRx.> doAnotherThing将在BackgroundScheduler上继续>然后观察将流切换到ComputationScheduler> doSomethingElse将发生在ComputationScheduler上>另一个observeOn将流切换到MainScheduler>订阅发生在MainScheduler上 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |