Play Framework:如何显示Future [List [String]]?

时间:2014-09-12 17:52:57

标签: scala http playframework future

我正在探索Play框架并且已经进入了一个角落。

使用WS库对Google Analytics进行API调用后,我收到了一个Future[Response]对象。在消化了Response对象后,我得到了我真正关心的数据,但由于它包含在Future中,我在将它写入浏览器时遇到了一些麻烦。

OK( gaApiString )

这给我一个错误,内容如下:

  

无法将scala.concurrent.Future [String]的实例写入HTTP   响应。尝试定义一个可写的[scala.concurrent.Future [String]]

我在查找&了解如何使用Writable对象。帮助不大?

1 个答案:

答案 0 :(得分:7)

您需要map FutureFuture[Result],并将其传递给Action.async

def test = Action.async { 

    val wsResult: Future[String] = ...

    wsResult.map { gaApiString => 
        Ok(gaApiString)
    }

}

如果gaApiString实际上是List[String],那么这取决于您想要用它做什么。将其显示为以逗号分隔的列表,您只需将其更改为Ok(gaApiString.mkString(","))即可。这里的关键是映射Future以在完成后操纵值。