rxjava programming example java reactive-programming rx-java

programming - RxJava: ¿cuál es la diferencia entre las devoluciones de llamada en doOnError(''devolución de llamada'') y suscribirse(*, ''devolución de llamada'')



rxjava maven (2)

En mi último proyecto, uso rxJava y me doy cuenta de que observable.doOnError(''onErrorCallback'').subscribe(action) y observable.subscribe(action, ''onErrorCallback'') comportan de diferentes maneras. Incluso desde los documentos, no es obvio para mí cuál es exactamente la diferencia entre ellos y cuándo debo usar la primera y la segunda variante.


De acuerdo con la documentación, doOnError no funciona de manera predeterminada en un Programador en particular


El operador doOnError permite inyectar efectos secundarios en la propagación de errores de una secuencia, pero no detiene la propagación de errores en sí. El suscriptor es el destino final de los eventos y ellos "salen" de la secuencia.

Puede ver la utilidad de doOnError con el siguiente ejemplo:

api.getData() .doOnError(e -> log.error(e)) .retry(2) .subscribe(...)

Le permite echar un vistazo al error, pero le permite reintentar en caso de error. Con un suscriptor final:

api.getData() .subscribe(v -> {}, e -> log.error(e) );

Debe organizar el manejo del error (además del registro) a su manera.