【发布时间】:2017-07-06 02:29:26
【问题描述】:
这个 Play for Scala 方法(应该返回 Future[play.api.mvc.Result])调用另一个方法 run,这是一个可能引发异常的未来。如果run 没有抛出异常,那么该方法应该返回一个ret 等于0 的Json。如果run 确实引发了异常,那么该方法应该返回一个具有ret 等于1 的Json。
问题是OnComplete 抛出编译错误:
类型不匹配;找到:所需单位: scala.concurrent.Future[play.api.mvc.Result]
如何解决这个问题?
def test (req:Int) : Future[play.api.mvc.Result] = {
val future = run(req)
future.map {
result =>
val json = JsObject(Seq(
"rs" -> Json.toJson(result),
"ret" -> JsString("0")
))
Ok(json)
}
future.onComplete { // <-- compilation error
case Success(_) => // do nothing
case Failure(ex) => {
val json = JsObject(Seq(
"msg" -> JsString(ex.getMessage),
"ret" -> JsString("1")
))
Ok(json)
}
}
}
【问题讨论】:
标签: scala playframework playframework-2.0