【问题标题】:Returning non-Future in Play for Scala为 Scala 返回非未来的 Play
【发布时间】:2017-04-07 23:53:17
【问题描述】:

我有以下方法在 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:

类型不匹配;发现:play.api.mvc.Result required: scala.concurrent.Future[play.api.mvc.Result]

如何解决这个问题?

【问题讨论】:

    标签: scala asynchronous playframework future playframework-2.5


    【解决方案1】:

    然后用Future包裹它,例如:

      Future.successful(Ok(JsObject(Seq(
          "msg" -> JsString("error!")
      ))))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-11
      • 1970-01-01
      • 2017-02-18
      • 1970-01-01
      • 2016-10-12
      • 2013-01-24
      • 2017-06-24
      • 2018-06-23
      相关资源
      最近更新 更多