Ich bin ein wenig verwirrt über die Reihenfolge, die Sie die und observeOn
Methoden auf Observablen aufrufen können. Ich lese ein paar Posts und einer der Jungs sagt, dass es egal ist und verwendet nur etwas in seinem Beispiel und andere Leute sagen, dass es wichtig ist. So, hier ist meine Frage:Stimmt die Reihenfolge von subscribeOn und observeOn?
Zum Beispiel:
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)
Ist das das gleiche wie:
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)
Wenn ich es richtig, die Mechanismen verstehen, dass sie anders sind. Der erste erledigt die ganze Arbeit am Haupt-Thread und der zweite erledigt die ganze Arbeit an einem anderen Thread und sendet dann zurück zum Haupt-Thread. Aber ich bin mir sicher, kann jemand das bitte für mich klären?
Hallo @Jahnold, die RxSwift-Dokumentation sagt - "Wenn Sie Sequenz-Generierung (subscribe-Methode) starten und dispose auf einem bestimmten Scheduler aufrufen möchten, verwenden Sie subscribeOn (Scheduler)." Bedeutet dies, wenn wir subscribeOn (:) angeben, wird es die Kette starten, die für den angegebenen Thread spezifiziert wurde, und auch die Dispose des Disposable wird für denselben spezifizierten Thread aufgerufen? – iamyogish