喷涂路线问题和未来[选项[String]]

时间:2014-05-11 22:41:10

标签: scala spray

我想使用一个返回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]

2 个答案:

答案 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