合并多个可观察对象RXJava

时间:2020-06-25 10:56:38

标签: rx-java

正在学习RxJava1.x。这似乎很简单,但努力做到正确。

我有两种方法

Single<List<Product>> getProducts()
Single<Price> getPrice(productId)

我要实现的目标是获取产品,并根据每种产品的价格进行填充。

Single<List<Item>> getProductsAndPrice() {
 return getProducts()
            .map(products -> {products.stream()
                    .peek(product -> {
                        log.info("Partial data populated {}", product.getId());
                        itemMap.put(product.getId().toString(), populatePartialSolutionData(product));
                    })
                    .collect(Collectors.toList());
                return products;
            }).map(products ->
                products.stream()
                    .map(product ->
                        getPrice(product.getProductId()).toObservable())
                    .collect(Collectors.toList())
            ).map(observables -> {
                Observable.mergeDelayError(observables)
                    .subscribe(productPrice -> {
                        populatePriceOptions(productPrice, itemMap);               
                        items.add(itemMap.get(productPrice.getProductId()));
                    });
                return items;
           });
}

问题似乎在于退货在完成填充价格之前发生。我希望有人可以对此提供帮助。

0 个答案:

没有答案