如何使用Single.flatMap合并两个值?

问题描述 投票:0回答:1

我有此代码:

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;
    });
}
java rx-java2
1个回答
0
投票
private Single<Invoice> getInvoiceWithItems() {
    return getInvoice().flatMap(invoice -> getItems(invoice).map(items -> {
        invoice.setItems(items);
        return invoice;
    }));
}
© www.soinside.com 2019 - 2024. All rights reserved.