我有一个 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/