2

当使用模板生成响应时,会计算模板然后发送结果。

在构建响应时是否可以流式传输模板的结果?

4

1 回答 1

3

流式传输通过部分发送结果来工作,因此您的模板应该只构建响应的一部分。

我假设您有一个Enumerator[Part]wherePart是对结果部分进行建模的类型。例如,您可以从 Web 服务调用或数据库查询构建此枚举器。

然后您需要将这些响应部分转换为 html 部分。您可以使用Enumeratee[Part, Html].

最后,使用feed您的 HTTP 结果的方法并将其传递给您的枚举器和您的枚举器。

这是一个(未经测试的)示例,说明了上述解释:

def stream = Action { implicit request =>
  val stream: Enumerator[Part] = …
  val toHtml = Enumeratee.map[Part] { part =>
    views.html.part(part)
  }
  Ok.feed(stream &> toHtml)
}
于 2012-06-06T21:58:33.987 回答