rx java - rxjava2 - RxJava introdujo Single<T>. ¿Cómo convierto un<T> observable a un solo<T>?
rxjava2 observable create (3)
RxJava introdujo recientemente Single . ¿Hay una manera de convertir un observable ya existente (que es más o menos un solo) a un solo sin modificar la fuente del observable original?
Por ejemplo, tengo una clase de servicio de api con un método que devuelve un Observable, que esencialmente es buscar un usuario desde un recurso remoto. Digamos que no puedo modificar el servicio. Quiero consumir esto en otro lugar, pero devolver un solo. ¿Cómo hago esto?
Un pellizco mas de fondo
RxJava introdujo recientemente el concepto de un solo que es más o menos una devolución de llamada simple amigable con Rx (es decir, un observable que emite un objeto o un error) (lea más sobre esto aquí - Single )
Nota: Esto es para RxJava 1. Vea otras respuestas abajo / arriba para Rx2 :)
Se agregaron 2 nuevos métodos de conveniencia para lograr esto.
toSingle()
convierte un observable que emite un solo elemento en un único que emite ese elemento
toObservable
convierte un Single en un Observable que emite el elemento emitido por el Single y luego se completa
(fuente: Single )
Creo que la respuesta aceptada está desactualizada. Probablemente debería comprobar los siguientes métodos.
singleOrError: emite el único elemento, IndexOutOfBoundsException si el origen es más largo que 1 elemento o una NoSuchElementException si el origen está vacío.
firstOrError: emite el primer elemento o una excepción NoSuchElementException si la fuente está vacía.
lastOrError: emite el último elemento o una excepción NoSuchElementException si la fuente está vacía.
elementAtOrError: Emite el elemento indexth o una excepción NoSuchElementException.
Más información en esta página: https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0
En rxjava2 puedes usar Single.fromObservable()
.