0
Play for Scala中的這個Action.async
方法應該只在第一個未來返回1
時執行第二個未來,這就是爲什麼它們是嵌套的。如果第一個未來返回的結果不是1
,那麼第二個未來不應執行。但我在f2.map
中收到以下編譯錯誤。爲什麼是這個錯誤,以及如何解決它?Play for Scala中的嵌套期貨無法編譯
類型不匹配;發現: 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))
}
}
}