2016-11-23 163 views
1

我有以下方法,在斯卡拉應用播放返回字符串列表:返回非未來在玩斯卡拉

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) 
    } 

}

的代碼不與下面的錯誤編譯,因爲如果訪問= 0,結果不是未來:

類型不匹配;發現:play.api.mvc.Result要求: scala.concurrent.Future [play.api.mvc.Result]

如何解決這一問題?

回答

5

然後用未來的包裝它,例如:

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