使用模板生成响应时,将计算模板,然后发送结果。
在构建响应时是否可以流式传输模板的结果?
答案 0 :(得分:3)
Streaming的工作方式是逐个发送结果,因此您的模板应该只构建响应的一部分。
我假设您有Enumerator[Part]
,其中Part
是对结果部分进行建模的类型。例如,您可以从Web Service调用或数据库查询构建此枚举器。
然后你需要将这些响应部分转换为html部分。您可以使用Enumeratee[Part, Html]
。
最后,使用您的HTTP结果的feed
方法,并将您的枚举数与您的枚举数一起传递给它。
这是一个(未经测试的)示例,说明了上述解释:
def stream = Action { implicit request =>
val stream: Enumerator[Part] = …
val toHtml = Enumeratee.map[Part] { part =>
views.html.part(part)
}
Ok.feed(stream &> toHtml)
}