flatMapIterable不在列表中发出对象

时间:2017-12-23 04:01:10

标签: java-8 rx-java rx-java2 flatmap

提前感谢您的帮助。

我有一个场景,我正在输入订单详细信息(包括订单对象和orderItem对象列表)。

我的目标是首先创建一个订单,然后使用生成的orderId来创建orderItems。

以下是为执行上述任务而编写的代码。

orderCreate对象

public class OrderCreate {

    @JsonProperty("order")
    Order order;

    @JsonProperty("orderItem")
    List<OrderItem> orderItem;
}

服务代码

public Observable<ResponseEntity<OrderCreate>> createOrder(OrderCreate orderCreate) {

    Observable<ResponseEntity<OrderCreate>> order = 
    Observable.just(orderCreateDao.createOrder(orderCreate))
    .<ResponseEntity<OrderCreate>> flatMap((ord) -> {
        System.out.println("step1");
        Observable.just(ord.getBody().getOrderItem())
        .flatMapIterable(oisd -> oisd)
        .flatMap(oi -> {
            System.out.println("step2");
            oi.setOrderId(ord.getBody().getOrder().getOrderId());
            ResponseEntity<String> ordItemIs = orderCreateDao.createOrderItem(oi);
            return Observable.just(ordItemIs);
        });
        System.out.println("step3");
        return Observable.just(ord);
    });
    return order;
}

在上面的代码中,step1和step3正在执行,但不是step2。

0 个答案:

没有答案