Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rxjava merge observables of different type

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.

like image 776
Jelly Avatar asked Mar 23 '15 20:03

Jelly


People also ask

How do I combine multiple Observables into one?

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.

How do you run two Observables parallel?

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.

What is combineLatest in RxJava?

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.

Is RxJava deprecated?

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.


Video Answer


1 Answers

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.

like image 184
Ross Hambrick Avatar answered Oct 22 '22 21:10

Ross Hambrick