Mik*_*hyn 2 continuations playframework
你能给我一些关于如何在游戏框架中使用延续的好例子的链接吗?(除了游戏框架的来源,他们的'样本和测试'和现场文档,已经存在)
"for dummies"格式的任何文档和理论也受到赞赏.
Continuations主要通过使用await()Controller提供的方法来工作.await方法可以接受两种不同类型的参数(实际上有6种方法的重载,但它们是2个主题的简单变体).
第一个是超时调用await.这可以是毫秒,或者可以使用表示时间的字符串文字指定,例如1s1秒等.
第二个是用一个Future对象调用await ,最常用的是Play的java Future实现,叫做Promise(在libs.F中).Promise在履行承诺时返回,因为作为Promise的一部分调用的事件已完成.但是,Promise可以不仅仅是一个事件,它可以是多个事件.甚至有一些选项可以说waitAny,所以它只等待许多事件中的一个返回.
因此,这两种方法基本上都会导致事件在未来的某个时刻发生.第一个是预先确定的,第二个是取决于Promise履行需要多长时间.
播放延续是一种使此事件结构的编码更容易的方法.您可以输入一些说明的代码
// do some logic
await(timeout or promise);
// continue the execution
Run Code Online (Sandbox Code Playgroud)
在幕后,HTTP线程被释放,因此Play可以更有效地处理更多的并发请求.当满足超时或承诺时,该方法继续执行,而不必为再次启动的执行线程编写任何特定处理.
它说,将Play网站的代码用于延续
public static void loopWithoutBlocking() {
for(int i=0; i<=10; i++) {
Logger.info(i);
await("1s");
}
renderText("Loop finished");
}
Run Code Online (Sandbox Code Playgroud)
这实际上结束了执行的线程10次,并在等待1秒后启动一个新线程.从程序员的角度来看,这一切都是完全透明的,并且允许您直观地构建应用程序而不必担心创建非阻塞应用程序,因为这些都是由Play神奇地处理的!
| 归档时间: |
|
| 查看次数: |
2330 次 |
| 最近记录: |