我正在探索Play框架并且已经进入了一个角落。
使用WS库对Google Analytics进行API调用后,我收到了一个Future[Response]
对象。在消化了Response对象后,我得到了我真正关心的数据,但由于它包含在Future中,我在将它写入浏览器时遇到了一些麻烦。
OK( gaApiString )
这给我一个错误,内容如下:
无法将scala.concurrent.Future [String]的实例写入HTTP 响应。尝试定义一个可写的[scala.concurrent.Future [String]]
我在查找&了解如何使用Writable
对象。帮助不大?
答案 0 :(得分:7)
您需要map
Future
到Future[Result]
,并将其传递给Action.async
。
def test = Action.async {
val wsResult: Future[String] = ...
wsResult.map { gaApiString =>
Ok(gaApiString)
}
}
如果gaApiString
实际上是List[String]
,那么这取决于您想要用它做什么。将其显示为以逗号分隔的列表,您只需将其更改为Ok(gaApiString.mkString(","))
即可。这里的关键是映射Future
以在完成后操纵值。