Playframework 2.0 播放:您应该始终使用Action.async吗?

Playframework 2.0 播放:您应该始终使用Action.async吗?,playframework-2.0,Playframework 2.0,我有点搞不懂怎么玩!在其控制器层中工作。一些文件说明,玩!始终是异步和非阻塞的。所以我被Action和Action.async弄糊涂了。动作阻塞吗?如果是这样的话,文档说您应该始终保持异步和非阻塞,那么您应该在所有控制器中始终使用Action.async吗?你为什么选择不太好?我确信这里有一些我不理解的东西,如果您能理解这一点,我将不胜感激。游戏是完全异步和非阻塞的 大多数操作往往需要内联执行,因此Play方便地反映了这一点。但是,如果您的操作中有一个异步操作(例如调用WS),那么您可以使用ac

我有点搞不懂怎么玩!在其控制器层中工作。一些文件说明,玩!始终是异步和非阻塞的。所以我被Action和Action.async弄糊涂了。动作阻塞吗?如果是这样的话,文档说您应该始终保持异步和非阻塞,那么您应该在所有控制器中始终使用Action.async吗?你为什么选择不太好?我确信这里有一些我不理解的东西,如果您能理解这一点,我将不胜感激。

游戏是完全异步和非阻塞的


大多数操作往往需要内联执行,因此Play方便地反映了这一点。但是,如果您的操作中有一个异步操作(例如调用WS),那么您可以使用action.async传回未来的结果。

action
是阻塞操作,它从
Request=>result
中获取一个函数,因此您可以在其中执行任何阻塞操作
Action.async
是非阻塞的,需要一个来自
Request=>Future[Result]
的函数,但这里必须认识到,其中只有非阻塞的内容才有意义,因为如果您进一步阻塞某些内容,它将毫无意义。@Christopher Hunt提到的WS-call是一个很好的例子,因为它提供了一个未来的[Response],您可以轻松地将其转换为
Future[Result]
Action.async所期望的返回类型。但是您可以自由地使用
scala.Future API
处理任何可能是异步和非阻塞的内容