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

How can I merge both values using Single.flatMap?

我有这个代码:

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;
    }));
}