java - 如何调用两个并行返回 DeferredResult<> 的方法?
问题描述
我有一个 Spring Boot 应用程序和旧代码,控制器中有两个端点,它们都返回不同对象的 DeferredResult<>,现在我需要创建一个新端点,它基本上调用这两种方法,并在经过一些过滤和 thn 后组合它们的结果把它返还。
我想知道有没有一种方法可以同时调用这两种方法,然后将它们的结果合并到一个调用中,就像你在 javascript 中使用 Promise.all 所做的那样?我只是不想做一个回调地狱或等待一个操作完成后再开始另一个操作。当然,新端点也将返回 ReferredResult<>。
在这方面的任何帮助将不胜感激。
谢谢。
解决方案
您可以使用它CompletableFuture
来处理在执行处理之前获得两个端点结果的要求。
thenCombine()
在这里可能是一个很好的帮助。
这是一个指南,这里有一个很好的例子
编辑 :
这意味着要更改DeferredResult
toCompletableFuture
并使用以下内容:
CompletableFuture<String> completableFuture =
CompletableFuture.supplyAsync(this::processRequest);
对于您的两个端点。
您新创建的 REST 端点会将它们与combineThen()
推荐阅读
- javascript - 在数组数组中添加数字
- spring - 我们能否根据 Mediatype 加载不同的安全配置,即一种 REST 和一种用于 Web?
- reactjs - firebase firestore nosql 设计用于与群组聊天的应用程序
- vb.net - 无法在线程中设置错误提供程序
- javascript - Excel 删除“+”作为字符串的第一个字符
- algorithm - 如何平衡填充int到对称矩阵
- node.js - 无法将数据发布到数据库并且数据库未显示在 Robo 3T (MongoDB/Mongoose/Express) 中
- r - 替换连续行中的相同值,并在 R 中的值发生更改后停止替换
- liquibase - Liquibase 中更新列中的值更改
- c# - 传递到 ViewDataDictionary 的模型项的类型为“System.Collections.Generic.List”