Nel mio ultimo progetto, utilizzo rxJava e mi rendo conto che observable.doOnError('onErrorCallback').subscribe(action)
e observable.subscribe(action, 'onErrorCallback')
si comportano in modi diversi. Anche dai documenti non è ovvio per me qual è esattamente la differenza tra loro e quando dovrei usare la prima e la seconda variante.RxJava: qual è la differenza tra i callback in doOnError ('callback') e subscribe (*, 'callback')
16
A
risposta
21
L'operatore doOnError
permette di iniettare effetto collaterale nella propagazione di errore di una sequenza, ma non impedisce la propagazione dell'errore stesso. Il Sottoscrittore è la destinazione finale degli eventi e "escono" la sequenza.
Si può vedere l'utilità di doOnError
con il seguente esempio:
api.getData()
.doOnError(e -> log.error(e))
.retry(2)
.subscribe(...)
Esso consente di sbirciare in errore, ma consente di riprovare in caso di errore. Con un utente finale:
api.getData()
.subscribe(v -> {}, e -> log.error(e));
Dovete organizzare la gestione dell'errore (oltre al logging) sulla propria strada.
0
Secondo la documentazione doOnError
non funziona per impostazione predefinita su un particolare Scheduler
Questo vale anche per subscribe(), ma penso anche che sia irrilevante per la domanda dell'OP. – akarnokd