Ich bin immer noch ein reaktiver Neuling und ich bin auf der Suche nach Hilfe.Kombinieren zwei Observable <Void> s
func doA() -> Observable<Void>
func doB() -> Observable<Void>
enum Result {
case Success
case BFailed
}
func doIt() -> Observable<Result> {
// start both doA and doB.
// If both complete then emit .Success and complete
// If doA completes, but doB errors emit .BFailed and complete
// If both error then error
}
Die oben ist, was ich glaube, ich will ... Die ersten Funktionen doA()
und doB()
Wrap-Netzwerk ruft, so dass sie beide ein Signal aussenden und dann Complete
(oder Error
ohne Next
Ereignisse zu emittieren.) Wenn doA()
abgeschlossen ist aber doB()
Fehler, ich möchte doIt()
emittieren und dann abschließen.
Es fühlt sich an, als ob ich zip
oder combineLatest
verwenden sollte, aber ich weiß nicht, wie ich wissen soll, welche Sequenz fehlgeschlagen ist, wenn ich das tue. Ich bin mir auch ziemlich sicher, dass catchError
Teil der Lösung ist, aber ich bin mir nicht sicher, wo genau es hingehört.
-
Als ich darüber denke, ich bin in Ordnung mit den Anrufen nacheinander passiert. Das könnte noch besser sein ...
IE:
Start doA()
if it completes start doB()
if it completes emit .Success
else emit .BFailed.
else forward the error.
Vielen Dank für jede Hilfe.
Hmm ... Danke für die Antwort, aber RxSwift hat nicht die materialisierte Methode. Zumindest jetzt noch nicht. –