asynchronous - rxjava - scheduler rx android
rxjava fusionar observables de diferente tipo (2)
Soy nuevo en rxjava. Necesito combinar dos observables que emitan objetos de diferente tipo. Algo como Observable<Milk>
y Observable<Cereals>
y obtener un Observable<CerealsWithMilk>
. No pude encontrar ningún operador para algo como esto. ¿Cuál sería la forma de rx de hacer algo como esto? Tenga en cuenta que la Milk
y los Cereals
son asincrónicos.
Es difícil de decir sin saber exactamente lo que necesita, pero posiblemente zip() o combineLatest() .
zip
tomará Observable<Milk>
y Observable<Cereals>
y te permitirá combinarlos en CerealsWithMilk
través de una función proporcionada. Esto emite un nuevo CerealsWithMilk
cada vez que obtienes Milk
y Cereals
.
combineLatest
es similar a zip
excepto que emitirá un nuevo CerealsWithMilk
incluso si solo se emite una nueva Milk
o solo un nuevo Cereals
.
Si desea fusionar observables de diferente tipo, debe usar Observable.zip
:
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.zip(o1, o2, (a, b) -> a + b);
result
será un observable que generará la aplicación de (a, b) -> a + b
a los o1
o2
y o2
. Resultando en un observable rendimiento "a1", "b2", "c3"
.