0
스칼라에서 Play의 Action.async
메서드는 첫 번째 미래가 1
을 반환하는 경우에만 두 번째 미래를 실행해야하므로 중첩됩니다. 첫 번째 미래가 1
과 다른 결과를 반환하면 두 번째 미래가 실행되지 않아야합니다. 하지만 f2.map
에 다음과 같은 컴파일 오류가 발생합니다. 이 오류가 발생한 이유와 해결 방법은 무엇입니까?Play의 스칼라 중첩 된 미래가 컴파일되지 않습니다.
타입 불일치; 발견 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))
}
}
}