我查看了以下代码: How to combine 3 or more CompletionStages?,但是在这篇文章中,只有来自CompletableFutures的已完成任务被合并。
如何将异步CompletableFuture与Completed CompletableFuture结合起来,以便将已完成的completableFuture的结果与尚未计算结果的结果相结合?
答案 0 :(得分:0)
您可以使用CompletableFuture.completedFuture
将任何普通数据转换为CompletableFuture
对象,然后使用thenCompose
中的CompletableFuture
来合并Async操作的结果。示例代码:
long userId = 12345678899L;
CompletableFuture.completedFuture(userId)
.thenCompose(userId -> getUserDeatils(userId))
.thenAccept(user -> doSomething(user));
// or thenApply(user -> doSomething(user))
其中getUserDeatils(userId)可能是这样的:
CompletableFuture<User> getUserDeatils(long userId) {
// some async code to load user details
}