【发布时间】:2017-04-08 23:21:03
【问题描述】:
Play for Scala 中的这个Action.async 方法只有在第一个future 返回1 时才应该执行第二个future,这就是它们嵌套的原因。如果第一个未来返回的结果与1 不同,则永远不应执行第二个未来。但我在f2.map 中收到以下编译错误。为什么会出现此错误以及如何解决?
类型不匹配;成立 : scala.concurrent.Future[scala.concurrent.Future[play.api.mvc.Result]] 必需:play.api.mvc.Result
def index = Action.async { request =>
val f1 = Future {1}
f1.map {
access => if (access==1) {
val f2 = Future {2}
f2.map { // <-- compilation error
result => {
val json = JsObject(Seq(
"acc" -> JsNumber(access),
"ret" -> JsString("0")
))
Ok(json)
}
}
}
else {
val json = JsObject(Seq(
"acc" -> JsNumber(0),
"ret" -> JsString("0")
))
Future.successful(Ok(json))
}
}
}
【问题讨论】:
标签: scala playframework playframework-2.5