我有此代码:
private Single<Invoice> getInvoiceWithItems() {
return getInvoice().flatMap(invoice -> getItems(invoice)); // <--- Here, I need invoice and items
}
private Single<Invoice> getInvoice() { ... }
private Single<List<Item>> getItems(Invoice invoice) { ... }
我想做类似invoice.setItems(items)
的操作。我尝试将一个额外的函数参数传递给flatMap
,但它不接受。
我该怎么办?
我找到了这个解决方案,但是我不确定这是否是最好的解决方案:
private Single<Invoice> getInvoiceWithItems() {
return Single.zip(getInvoice(), getInvoice().flatMap(invoice -> getInvoiceItems(invoice)), (invoice, items) -> {
invoice.setItems(items);
return invoice;
});
}
private Single<Invoice> getInvoiceWithItems() {
return getInvoice().flatMap(invoice -> getItems(invoice).map(items -> {
invoice.setItems(items);
return invoice;
}));
}