我想采用一个返回a的函数,并将其Future[Option[String]]与spray routing的onComplete指令结合使用.但无论我做什么,我似乎无法让它发挥作用.
假设我有以下功能:
def expensiveOperation: Future[Option[String]] = { ... do stuff ... }
Run Code Online (Sandbox Code Playgroud)
然后我想定义我的一部分Route:
onComplete(expensiveOperation) {
case Success(string) => complete(string)
case Failure(_) => complete("failure")
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不编写单独的函数的情况下将其Future[Option[String]]转换为基本函数Future[String]?
onComplete(expensiveOperation) {
case Success(Some(string)) => complete(string)
case _ => complete("failure")
}
Run Code Online (Sandbox Code Playgroud)
要么:
onComplete(expensiveOperation.map(_.get)) {
case Success(string) => complete(string)
case Failure(_) => complete("failure")
}
Run Code Online (Sandbox Code Playgroud)