如何使用 Future[StandardRoute] 完成请求

Vis*_*ium 2 scala akka-http

我有简化的代码如下所示:

path("path")  {
  post {
    val routeFuture: Future[StandardRoute] = Future {
      //some app logic
      utilFunctionRoute()
    }

    ??? // complete the request
  }
}
Run Code Online (Sandbox Code Playgroud)

有一次,我有 Future[StandardRoute] 包含我的结果,但我不知道如何在不阻塞 Future 的情况下完成此请求。

pam*_*amu 5

您可以onComplete在处理期货时使用来完成请求without blockingonComplete需要未来,然后我们可以进行模式匹配successfailure准备 Http 响应。

path("path")  {
  post {
    val routeFuture: Future[StandardRoute] = Future {
      utilFunctionRoute()
    }

    onComplete(routeFuture){
      case util.Success(f) =>
        complete(StatusCodes.OK)

      case util.Failure(ex) =>
        complete(StatusCodes.InternalServerError )
  }
}
Run Code Online (Sandbox Code Playgroud)