2017-09-04 3 views
0

Ich habe 2 Observable, dieRxJava - Kombinieren Sie 2 Anrufe

  1. 2 WS ruft eine Liste der Fahrzeugüber (an diesem Punkt, jedes Auto in dieser Liste nicht über seinen Besitzer)
  2. Holen Sie sich die Besitzer des Autos

Also zuerst bekomme ich die Liste der Autos. Alles ist ok. Aber ich würde den Besitzer für jedes Auto holen und es in die Car-Entität setzen, wie car.setOwner(owner) und die endgültige Liste der Autos senden, die ihren Besitzer enthalten.

Api.getCars() 
.subscribe(new Action1<List<Car>>() { 
    @Override 
    public void call(List<Car> cars) { 
    // get the list of cars, but need to get their owner 
    }); 

Welches ist der beste Weg, dies zu tun? (Darüber hinaus ohne Lambda-Ausdrücke.)

+0

was macht es aus, wenn es mit Lambda ist oder nicht? –

+1

Weil für das Projekt sie nicht verwendet – ejay

+0

@ejay 'den Besitzer zu bekommen 'ist ein weiterer async api Anruf richtig? – Manza

Antwort

2

könnten Sie nutzen thisflatMap Überlastung:

Api.getCars() 
    .flatMap(cars -> Observable.from(cars)) // flatten your list 
    .flatmap(car -> Api.getOwner(car), // request each owner 
      (car, owner) -> { 
       car.setOwner(owner); // assign owner to the car 
       return Observable.just(car); 
      }) 
    .toList() // collect items into List 
    ... // here is your Observable<List<Car>>