java - 如何并行调用两个返回 DeferredResult<> 的方法?

标签 java list spring-boot asynchronous deferred

我有一个 Spring Boot 应用程序和遗留代码, Controller 中有两个端点,这两个端点都返回不同对象的 DeferredResult<> ,现在我需要创建一个新端点,它基本上调用这两个方法,并在一些之后组合它们的结果过滤然后返回。

我想知道是否有一种方法可以同时调用这两个方法,然后将它们的结果合并到一个调用中,就像您在 javascript 中使用 Promise.all 所做的那样?我只是不想进行回调 hell 或等待一个操作完成后再开始另一操作。当然,新端点还将返回 ReferredResult<>。

在这方面的任何帮助将不胜感激。

谢谢。

最佳答案

您可以使用 CompletableFuture 来处理在执行处理之前获得两个端点结果的要求。

thenCombine() 在这里可能会很有帮助。

这是一个包含很好示例的指南 here

编辑:

这意味着将 DeferredResult 更改为 CompletableFuture 并使用以下内容:

 CompletableFuture<String> completableFuture =
      CompletableFuture.supplyAsync(this::processRequest);

对于您的两个端点。

您新创建的 REST 端点将使用 combineThen() 将它们组合起来

关于java - 如何并行调用两个返回 DeferredResult<> 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57910103/

相关文章:

java - 用于调节和字符串匹配

python - 如何返回列表项的索引

C++ 特性,如 std::set,允许重复

spring-boot - 无法获取表锁 - 另一个 Flyway 实例可能正在运行

java - Spring Boot 在作为 Servlet 运行时可以连接到 Cassandra,但不能作为命令行运行

java - 关于OpenLRW部署到mongo docker实例时出现异常

java - Kafka Connect 无法将自定义存储接收器分区器转换为 Partitioner 接口(interface)

java - 扫描仪正则表达式分隔符问题

java - 如何为Postman的binary类型的请求体构建RestTemplate?

python - 根据另一个数组中的所有值查找一个数组的最近索引 - Python/NumPy