我想使用一个返回Future[Option[String]]
的函数,并将其与spray routing的onComplete
指令结合使用。但无论我做什么,我似乎无法让它发挥作用。
假设我有以下功能:
def expensiveOperation: Future[Option[String]] = { ... do stuff ... }
然后我想要定义Route
的一部分:
onComplete(expensiveOperation) {
case Success(string) => complete(string)
case Failure(_) => complete("failure")
}
有没有办法在不编写单独的函数的情况下将Future[Option[String]]
转换为基本的Future[String]
?
答案 0 :(得分:6)
onComplete(expensiveOperation) {
case Success(Some(string)) => complete(string)
case _ => complete("failure")
}
或:
onComplete(expensiveOperation.map(_.get)) {
case Success(string) => complete(string)
case Failure(_) => complete("failure")
}
答案 1 :(得分:3)
迟到的答案。发现这是有效的。
NSString *url = [self getParameterizedUrl:@"http://www.example.com" withParameters:self.params];
希望这可以解决问题
https://groups.google.com/forum/#!topic/spray-user/FM6mF6JXuNM