如何将异步CompletableFuture与完成的CompletableFuture结合起来?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将异步CompletableFuture与完成的CompletableFuture结合起来?相关的知识,希望对你有一定的参考价值。
我查看了以下代码:How to combine 3 or more CompletionStages?,但在这篇文章中,只有来自CompletableFutures的Completed任务被合并。
如何将异步CompletableFuture与Completed CompletableFuture结合起来,以便将已完成的completableFuture的结果与尚未计算结果的结果相结合?
答案
您可以使用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
}
以上是关于如何将异步CompletableFuture与完成的CompletableFuture结合起来?的主要内容,如果未能解决你的问题,请参考以下文章
CompletableFuture异步编排(计算完成回调代码示例)
CompletableFuture异步编排(计算完成回调代码示例)