当前位置: 首页 > 知识库问答 >
问题:

如何将异步的CompletableFuture与已完成的CompletableFuture结合起来?

景俊良
2023-03-14

我研究了以下代码:如何组合3个或多个CompletionStages?,但在这篇文章中,只有来自CompletableFutures的已完成任务被组合。

我如何将异步的CompletableFuture与Complted CompletableFuture相结合,以便将已经完成的CompletableFuture的结果与尚未计算结果的结果相结合?

共有1个答案

汲品
2023-03-14

您可以使用CompletableFuture。completedFuture将任何正常数据转换为CompletableFuture对象,然后使用然后从CompletableFuture组合异步操作的结果。示例代码

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
}

 类似资料:
  • 已完成未来() 返回已使用给定值完成的。 我们如何构造一个已经异常完成的< code>CompletableFuture? 也就是说,我希望future抛出一个异常,而不是返回值。

  • 主要内容:1.业务问题,2.CompletableFuture介绍,3.创建异步对象,4.计算完成时回调方法,5.线程串行化与并行化方法,6.多任务组合,7.优化商品详情页1.业务问题 询商品详情页的逻辑非常复杂,数据的获取都需要远程调用,必然需要花费更多的时间。 假如商品详情页的每个查询,需要如下标注的时间才能完成 获取sku的基本信息 1.5s 获取sku的图片信息 0.5s 获取spu的所有销售属性 1s sku价格 1.5s 那么,用户需要4.5s后才能看到商品详情页的内容。很显然是不能

  • 主要内容:1.业务问题,2.CompletableFuture介绍,3.创建异步对象,4.计算完成时回调方法,5.线程串行化与并行化方法,6.多任务组合,7.优化商品详情页1.业务问题 询商品详情页的逻辑非常复杂,数据的获取都需要远程调用,必然需要花费更多的时间。 假如商品详情页的每个查询,需要如下标注的时间才能完成 获取sku的基本信息 1.5s 获取sku的图片信息 0.5s 获取spu的所有销售属性 1s sku价格 1.5s 那么,用户需要4.5s后才能看到商品详情页的内容。很显然是不能

  • 到目前为止我在Java方面的努力

  • 我正在尝试实现一个通用的REST客户端,如下所示。我有自己的模型将HTTP响应表示为response T。这里T是服务调用的返回类型,它可能只是T或Ts列表。下面的代码不编译,我需要帮助。 最终调用下面的方法,