use*_*593 5 asynchronous future playframework-2.0
下面的代码不编译,我不知道如何解决它.
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"))
}
})
}
}
Run Code Online (Sandbox Code Playgroud)
该行f2.map(y => Ok("second"))产生编译错误:
类型不匹配; 发现:scala.concurrent.Future [play.api.mvc.SimpleResult [String]] required:play.api.mvc.Result
核心"business logic" is: f2只能运行if n is not 10.
f1将成为结果的未来.
您将返回案例10的结果,否则返回结果的未来.您需要将结果放在相同的术语中.尝试:
f1 flatMap {x => x match {
case 10 => Future.successful(Ok("first"))
case _ => {
val f2 = Future.successful(n)
f2.map(y => Ok("second"))
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |