single rxjava rxandroid asynchronous observable rx-java rx-android
Observable.zip

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" .