Asynchronous 如何使用Play 2.1.1异步请求和未来

Asynchronous 如何使用Play 2.1.1异步请求和未来,asynchronous,playframework-2.0,future,Asynchronous,Playframework 2.0,Future,下面的代码无法编译,我不知道如何修复它 def doAsync(n: Int) = Action { import scala.concurrent.ExecutionContext.Implicits.global Async { val f1 = Future.successful(n) f1.map(x => x match { case 10 => Ok("first") case _ => { val

下面的代码无法编译,我不知道如何修复它

def doAsync(n: Int) = Action {
  import scala.concurrent.ExecutionContext.Implicits.global

  Async {
    val f1 = Future.successful(n)

    f1.map(x => x match {
      case 10 => Ok("first")
      case _ => {
        val f2 = Future.successful(n)
        f2.map(y => Ok("second"))
      }
    })
  }
}
f2.map(y=>Ok(“second”)
生成编译错误

类型失配;发现: 需要scala.concurrent.Future[play.api.mvc.SimpleResult[String]] play.api.mvc.Result


核心的
“业务逻辑”是:如果n不是10,f2
只能运行

f1将是一个结果的未来

您将返回案例10的结果,否则将返回结果的未来。你需要把结果用同样的术语表达出来。尝试:

f1 flatMap {x => x match {
  case 10 => Future.successful(Ok("first"))
  case _ => {
    val f2 = Future.successful(n)
    f2.map(y => Ok("second"))
  }
}