Hola, descubrimos la solución a lo que necesitas, has scroll y la verás más abajo.
Solución:
La contrapresión es lo que se obtiene cuando una fuente Observable
está emitiendo elementos más rápido que un Subscriber
los puede consumir. Es más a menudo una preocupación con caliente observables, no frío otros como sus solicitudes de red.
Creo que deberías usar Completable
en lugar de Observable
en tus saveUser
método y uso Single
para todos los lugares donde sigue un patrón de solicitud/respuesta o de entrada/salida. Observable
debe usarse cuando realmente desea un flujo continuo de eventos.
La contrapresión ocurre cuando un Observable
está emitiendo artículos más rápidamente de lo que un operador o suscriptor puede consumirlos.
Sabiendo eso, la contrapresión no es un problema en su caso ya que su Observable
emitirá solo un elemento, por lo que Flowable
no es un buen candidato.
Así que la verdadera pregunta es si usar Completable
o Observable
por saveUser
y Single
o Observable
por findUser
y aquí como solo se espera un resultado (éxito o fracaso) en aras de la simplicidad y claridad de su API, definitivamente debe usar Completable
/Single
de lo contrario, será difícil comprender que solo se emitirá un valor, lo que podría inducir a error a los usuarios de la API.
La cardinalidad es una forma de entender las diferencias entre Completable, Quizás y Único:
- A
Maybe
es solo un Observable con cardinalidad 0 o 1, es decir, representa un resultado que puede estar presente o no. - A
Single
es un Observable que siempre devuelve un resultado, es decir, una cardinalidad de 1. - A
Completable
puede interpretarse como una especie deObservable
es decir, una cardinalidad de 0.
Entonces en tu caso puedes cambiar la firma del repositorio de esta manera:
Completable saveUser(...);
Single findUser(...);
(No mencioné Flowable
s que son como Observable
s con contrapresión).
Si te gustó nuestro trabajo, tienes la opción de dejar un tutorial acerca de qué te ha impresionado de este ensayo.