Sono ancora un principiante reattivo e sto cercando aiuto.Combinazione di due osservabili <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
}
Quanto sopra è quello che penso io voglio ... Le funzioni iniziali doA()
e doB()
rete avvolgere le chiamate in modo che saranno entrambi emettono un segnale e quindi Complete
(o Error
senza emettere alcun Next
eventi). Se doA()
Completa ma errori doB()
, voglio doIt()
emettere .BFailed
e quindi completare.
Sembra che dovrei usare zip
o combineLatest
ma non sono sicuro di sapere quale sequenza non è riuscita se lo faccio. Sono anche abbastanza sicuro che catchError
sia parte della soluzione, ma non sono sicuro di dove metterlo.
-
Come io sto pensando, sto bene con le chiamate accadendo in sequenza. Che potrebbe essere anche meglio ...
IE:
Start doA()
if it completes start doB()
if it completes emit .Success
else emit .BFailed.
else forward the error.
Grazie per qualsiasi aiuto.
Hmm ... Grazie per la risposta, ma RxSwift non ha il metodo materialize. Almeno non ancora. –