我有简化的代码如下所示:
path("path") {
post {
val routeFuture: Future[StandardRoute] = Future {
//some app logic
utilFunctionRoute()
}
??? // complete the request
}
}
Run Code Online (Sandbox Code Playgroud)
有一次,我有 Future[StandardRoute] 包含我的结果,但我不知道如何在不阻塞 Future 的情况下完成此请求。
您可以onComplete在处理期货时使用来完成请求without blocking。onComplete需要未来,然后我们可以进行模式匹配success并failure准备 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)