RxJava - 结合2个电话

时间:2017-09-04 13:52:36

标签: java rx-java

我有2个Observable,它们调用2个WS

  1. 获取汽车列表(此时此列表中的每辆车都没有车主)
  2. 获取汽车的拥有者
  3. 首先我得到汽车清单。一切都好。但是我会得到每辆车的车主并将其设置在Car实体中,例如car.setOwner(owner)并发送包含车主的最终车辆列表。

    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
        });
    

    这是最好的方法吗? (此外,没有lambdas。)

1 个答案:

答案 0 :(得分:2)

您可以利用this flatMap重载:

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