I'm new to rxjava. I need to combine two observables that emit objects of different type. Something like Observable<Milk>
and Observable<Cereals>
and get a Observable<CerealsWithMilk>
. I couldn't find any operator for something like this. What would be the rx way of doing something like this? Note that Milk
and Cereals
are async.
We can use the concat operator to take multiple Observables and return a new Observable that sequentially emits values from each Observable that were passed in. It works by subscribing to them one at a time and merging the results in the output Observable.
To achieve this is you can do this: Observable. just(dataRequestOne, dataRequestTwo). flatMap(new Func1<Data, Observable<Data>>() { @Override public Observable<Data> call(Data data) { return Observable.
RxJava implements this operator as combineLatest . It may take between two and nine Observables (as well as the combining function) as parameters, or a single List of Observables (as well as the combining function). It does not by default operate on any particular Scheduler.
RxJava, once the hottest framework in Android development, is dying. It's dying quietly, without drawing much attention to itself. RxJava's former fans and advocates moved on to new shiny things, so there is no one left to say a proper eulogy over this, once very popular, framework.
It's hard to say without knowing exactly what you need, but possibly zip() or combineLatest().
zip
will take both Observable<Milk>
and Observable<Cereals>
and let you combine them into CerealsWithMilk
via a provided function. This emits a new CerealsWithMilk
each time you get get both a Milk
and a Cereals
.
combineLatest
is similar to zip
except it will emit a new CerealsWithMilk
even if just a new Milk
or just a new Cereals
is emitted.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With