Play 2.0 用户指南 - 异步HTTP编程 --针对Scala开发者
处理异步结果 为什么需要异步结果? 目前为止,我们能够直接向客户端发送响应。 然而情况不总是这样:结果可能依赖于一个繁重的计算和一个长时间的web service调用。 缘于 Play 2.0 的工作方式,action代码必须尽可能的快(如,非阻塞)。那,未能生成最终结果前,应该返回什么呢?答案是返回一个 promise(承诺?) of response! A Promise [Result] 最终会赎回一个Result类型的值。使用 Promise[Result] 替换正常的Result,我们可以无阻塞的快速生成结果。该响应是一个返回Result的承诺(Promise)。 等待响应的时候,web客户端將会被阻塞,但服务器不会被阻塞,空闲资源可以移做它用。 怎样创建Promise[Result] 为了创建Promise[Result],我们首先需要另一个promise:该promise將为我们计算实际的结果值。 val promiseOfPIValue: Promise[Double] = computePIAsynchronously() val promiseOfResult: Promise[Result] = promiseOfPIValue.map { pi => Ok("PI value computed: " + pi) } 所有的 Play 2.0