首页 > 解决方案 > 如何调用两个并行返回 DeferredResult<> 的方法?

问题描述

我有一个 Spring Boot 应用程序和旧代码,控制器中有两个端点,它们都返回不同对象的 DeferredResult<>,现在我需要创建一个新端点,它基本上调用这两种方法,并在经过一些过滤和 thn 后组合它们的结果把它返还。

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

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

谢谢。

标签: javalistspring-bootasynchronousdeferred

解决方案


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

thenCombine()在这里可能是一个很好的帮助。

这是一个指南,这里有一个很好的例子

编辑 :

这意味着要更改DeferredResulttoCompletableFuture并使用以下内容:

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

对于您的两个端点。

您新创建的 REST 端点会将它们与combineThen()


推荐阅读