在 Play for Scala 中返回非 Future
Returning non-Future in Play for Scala
我有以下方法 returns Play for Scala 应用程序中的字符串列表:
def example = Action.async { request =>
val access = getAccess()
if (access > 0) {
val future = MyObject.intensiveMethod
future.map {
result => {
val list = result.asInstanceOf[List[String]]
val json = JsObject(Seq(
"list" -> Json.toJson(list)
))
Ok(json)
}
}
}
else {
val json = JsObject(Seq(
"msg" -> JsString("error!")
))
Ok(json)
}
}
代码未编译并出现以下错误,因为如果 access = 0 结果不是 Future:
type mismatch; found : play.api.mvc.Result required:
scala.concurrent.Future[play.api.mvc.Result]
如何解决这个问题?
然后用Future包裹起来,例如:
Future.successful(Ok(JsObject(Seq(
"msg" -> JsString("error!")
))))
我有以下方法 returns Play for Scala 应用程序中的字符串列表:
def example = Action.async { request =>
val access = getAccess()
if (access > 0) {
val future = MyObject.intensiveMethod
future.map {
result => {
val list = result.asInstanceOf[List[String]]
val json = JsObject(Seq(
"list" -> Json.toJson(list)
))
Ok(json)
}
}
}
else {
val json = JsObject(Seq(
"msg" -> JsString("error!")
))
Ok(json)
}
}
代码未编译并出现以下错误,因为如果 access = 0 结果不是 Future:
type mismatch; found : play.api.mvc.Result required: scala.concurrent.Future[play.api.mvc.Result]
如何解决这个问题?
然后用Future包裹起来,例如:
Future.successful(Ok(JsObject(Seq(
"msg" -> JsString("error!")
))))