gpt4 book ai didi

playframework - 需要在游戏框架示例中继续使用

转载 作者:行者123 更新时间:2023-12-02 07:45:05 24 4
gpt4 key购买 nike

你能给我一些关于如何在 play 框架中使用 continuations 的好例子的链接吗?(除了 play 框架的来源,他们的“样本和测试”和现场文档,已经在那里)

任何“傻瓜式”格式的文档和理论也很受欢迎。

最佳答案

Continuations 主要通过使用 Controller 提供的 await() 方法来工作。 await 方法可以接受两种不同类型的参数(该方法实际上有 6 个重载,但它们是 2 个主题的简单变体)。

第一个是超时调用 await。这可以以毫秒为单位,也可以使用表示时间的字符串文字来指定,例如1s 代表 1 秒等

第二种是使用 Future 对象调用 await,最常用的是使用 Play 的 java Future 实现,称为 Promise(在 libs.F 中)。 Promise 在实现时返回,因为作为 Promise 的一部分调用的事件已完成。但是,一个 Promise 可以是多个事件,也可以是多个事件。甚至可以选择 waitAny,以便它只等待许多事件之一返回。

因此,这两种方法基本上都会导致事件在未来某个时间点发生。第一个是预先确定的,第二个取决于实现 Promise 需要多长时间。

Play continuations 是一种简化此事件结构编码的方法。你可以输入一些代码说

// do some logic
await(timeout or promise);
// continue the execution

在后台释放HTTP线程,让Play可以更高效的处理更多的并发请求。当超时或 promise 得到满足时,该方法将继续执行,而您无需为再次启动的执行线程编写任何特定的处理代码。

从 Play 站点获取代码以进行延续,它说

public static void loopWithoutBlocking() {
for(int i=0; i<=10; i++) {
Logger.info(i);
await("1s");
}
renderText("Loop finished");
}

这实际上结束了执行10次的线程,等待1秒后开始新的线程。从程序员的角度来看,这整个事情是完全透明的,并且允许您直观地构建应用程序而不必担心创建非阻塞应用程序,因为这一切都由 Play 神奇地处理了!

关于playframework - 需要在游戏框架示例中继续使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7622868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com