我们如何在保持所有结果的同时组合 3 个或更多 completablefutures

How can we compose 3 or more completablefutures while maintaining all the results

我有 3 个要链接的服务

CompletableFuture<String> serviceA
CompletableFuture<String> serviceB(String resultFromA)
CompletableFuture<String> serviceC(String resultFromA, String resultFromB)

如果我使用 thenCompose,我似乎无法保持第一个结果

serviceA.thenCompose(a -> serviceB(a))
        .thenCompose(b -> serviceC(a, b));  // a is lost

如果我使用 CompletableFuture.allOf(),我看不到它允许链接 - 运行 按顺序并传递结果。

我将修改 serviceB,使其 returns 成为 Pair,或一些复合对象,但是有更好的方法吗?

serviceA.thenCompose(a -> serviceB(a).thenCompose(b -> serviceC(a, b)));