【发布时间】:2018-04-17 14:47:03
【问题描述】:
我有一个路由类(发送者)、一个演员和一个助手类。从路由类中,我向参与者发送请求并获得 Future 响应。现在,我想将未来的响应传递给助手并在那里解决它。
TestRoute.scala:
val response: Future[Any] = (actor ? request) (timeout)
handler(response)(executionContext)
TestHelper.scala:
def handler(futureResponse: Future[Any])(implicit ec: ExecutionContext): StandardRoute = {
onComplete(futureResponse) {
case Success(s) => complete(s)
case Failure(f) => reject
}
}
问题在于,虽然onComplete 在TestRoute.scala 中工作,但在移至TestHelper.scala 时它不起作用。任何想法可能是什么问题?
编辑:通过“它不起作用”,我的意思是整个 onComplete 函数被跳过并且根本不执行 - 没有错误,只是跳过。
【问题讨论】:
-
“它不起作用”到底是什么意思?
-
您的问题需要更多上下文。据我所知,您的处理函数应该返回一个新的 Future[StandardRoute] 或 Unit 如果它有副作用。
-
代码在我看来大致还可以,当您说它“只是跳过”时,您是如何执行它的?您是否尝试过添加打印/日志语句以确保两种情况都没有被评估?
标签: promise akka future akka-http