0
PlayのScalaのAction.async
メソッドは、最初の未来が1
を返す場合にのみ、2番目の未来を実行する必要があります。最初の未来が1
と異なる結果を返す場合、2番目の未来は決して実行されるべきではありません。しかし、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))
}
}
}