使用以下对象:
Order {
int orderId;
List<Item> items;
}
Item {
int price;
String description;
boolean free;
}
目标是保留从Observable <0rder>开始的非免费项目,并仍然返回Observable <0rder>。
我现在正在执行以下操作,但是我的项目没有被过滤:
getMyOrder() // returns Observable<Order> from the network
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.flatMap(
order -> Observable.from(order.items)
.filter(item -> !item.isFree())
.map(items -> order)
);
这似乎不应该使用RxJava来完成(特别是如果要Order
在过滤步骤之后发出),它可能是中的实例方法Order
,例如:
getMyOrder().subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map(Order::removeFreeItems)
.subscribe();
class Order {
int orderId;
List<Item> items;
public Order removeFreeItems() {
for (Iterator<Item> iterator = items.iterator(); iterator.hasNext(); ) {
if (iterator.next().free) {
iterator.remove();
}
}
return this;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句