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

如何在Quarkus中同步和异步地返回CompletionStage?

於永寿
2023-03-14

我有endpoint,它可以返回同步和异步结果

@POST
@Path("/create-account")
public CompletionStage<Response> createAccount(...) {

   if (preconditions) {
       return myAsyncFunction(...);
   }
   else {
       // how to return error immediately???
       return Response.status(Response.Status.BAD_REQUEST).build(); // incorrect return type
   }

}

如何刻意返回某物,即同步?

共有1个答案

牟黎昕
2023-03-14

CompletionStage是一个可能是异步计算的阶段,它在另一个CompletionStage完成时执行一个操作或计算一个值。所以它可以是同步操作的结果。

您可以创建并返回一个完成的completablefuture,它使用completablefuture.completedfuture静态方法实现CompletionStage。

 return CompletableFuture<Response>.completedFuture(Response.status(Response.Status.BAD_REQUEST).build())

返回的结果将已经完成并提供了响应。

 类似资料:
  • 我正在尝试创建一个回调函数: 首先,我创建了一个函数接口,用于定义回调函数的约定 我创建了一个类,该类将定义一个方法来调用我的回调(我通过使用lambda表达式传递了接口的实现作为对此方法的引用) 下面是我的代码: 但当我运行这段代码时,我得到了这样的结果。 有人能告诉我为什么我会有这个例外吗?

  • 问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做

  • 问题内容: 同步和异步AJAX调用有什么区别?何时使用同步以及何时异步? 问题答案: 在最基本的级别上,当您希望调用在后台发生时,您可以使用异步模式,而当您希望代码等待直到调用完成时,则可以使用同步模式。 异步模式是AJAX调用的常用方法,因为通常在事件上附加一个回调函数,以便您可以在服务器端数据就绪时进行响应,而不必等待数据到达。

  • 问题内容: 如何从异步函数返回值?我试图喜欢这个 它给了我, 问题答案: 您不能超出范围。为了获得预期的结果,您应该将其包装到异步IIFE中,即 样品。 有关更多信息 由于返回一个Promise,因此可以将其省略,如下所示: 然后像以前一样做

  • 本文向大家介绍如何解决异步回调地狱?相关面试题,主要包含被问及如何解决异步回调地狱?时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 我正在使用带有节点的数据库。js。以下请求可以正常工作: 我想异步返回多个的结果,但以下操作失败: 然后我必须在每个元素上调用,所以在调用函数时: 然而我得到: 还有点奇怪: 我怀疑我遗漏了的工作方式,那么如何返回多个结果的已实现结果呢?