正在学习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;
});
}
问题似乎在于退货在完成填充价格之前发生。我希望有人可以对此提供帮助。