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