播放框架 - 在 X 秒后执行 processing/redirect 时渲染视图
play framework - render view while doing processing/redirect after X seconds
注意:我是刚玩框架的
为了我的游戏!项目,我需要某种形式的异步编程。简单地说,我需要显示一个视图,同时在后台进行处理,然后进行重定向或呈现新表单。
此 已被询问但没有回复。我查看了 Play 文档页面,但没有找到任何解决方案。
我试过的:
我试图修改 play starter example
给出的 AsynchController
。然而,当导航到 http://localhost/message
时,该函数似乎更像是一个睡眠而不是一个已设置和 "forgotten" 的计划任务,即可以继续进一步编码。
AsynchController 片段: 有自己的修改
public CompletionStage<Result> message() {
return getFutureMessage(5, TimeUnit.SECONDS).thenApplyAsync(s -> ok(views.html.User.Account.verified.render()), exec);
}
private CompletionStage<String> getFutureMessage(long time, TimeUnit timeUnit) {
CompletableFuture<String> future = new CompletableFuture<>();
actorSystem.scheduler().scheduleOnce(
Duration.create(time, timeUnit),
() -> future.complete("Waiting 5 seconds..."),
exec
);
return future;
}
路线入口
GET /message controllers.AsyncController.message
用途:
我的目标是显示消息 Waiting 5 seconds...
,然后延迟 +/- 5 秒。此后它将到达 "future"(这是正确的吗?),从而呈现视图(或重定向到控制器),在本例中为 verified
页面(用于验证帐户)。
我的最初目标是否在正确的轨道上,我在哪里可以找到类似的好例子?
我有一个简单的解决方案,但是你必须在路由中设置 2 个条目。
第一个条目显示消息 "Waiting 5 seconds...",同时它向第二个条目发出 AJAX 调用。第二个条目的控制器执行 calculation/sleep 5 秒,然后 returns 所需的内容,这些内容将由 Javascript 在第一页上呈现。
在第一个网页中,您可以放置如下内容:
axios.get(second-url)
.then(function (response) {
document.getElementById(someplaceholder).innerHTML=response.data.
})
注意:我是刚玩框架的
为了我的游戏!项目,我需要某种形式的异步编程。简单地说,我需要显示一个视图,同时在后台进行处理,然后进行重定向或呈现新表单。
此
我试过的:
我试图修改 play starter example
给出的 AsynchController
。然而,当导航到 http://localhost/message
时,该函数似乎更像是一个睡眠而不是一个已设置和 "forgotten" 的计划任务,即可以继续进一步编码。
AsynchController 片段: 有自己的修改
public CompletionStage<Result> message() {
return getFutureMessage(5, TimeUnit.SECONDS).thenApplyAsync(s -> ok(views.html.User.Account.verified.render()), exec);
}
private CompletionStage<String> getFutureMessage(long time, TimeUnit timeUnit) {
CompletableFuture<String> future = new CompletableFuture<>();
actorSystem.scheduler().scheduleOnce(
Duration.create(time, timeUnit),
() -> future.complete("Waiting 5 seconds..."),
exec
);
return future;
}
路线入口
GET /message controllers.AsyncController.message
用途:
我的目标是显示消息 Waiting 5 seconds...
,然后延迟 +/- 5 秒。此后它将到达 "future"(这是正确的吗?),从而呈现视图(或重定向到控制器),在本例中为 verified
页面(用于验证帐户)。
我的最初目标是否在正确的轨道上,我在哪里可以找到类似的好例子?
我有一个简单的解决方案,但是你必须在路由中设置 2 个条目。
第一个条目显示消息 "Waiting 5 seconds...",同时它向第二个条目发出 AJAX 调用。第二个条目的控制器执行 calculation/sleep 5 秒,然后 returns 所需的内容,这些内容将由 Javascript 在第一页上呈现。
在第一个网页中,您可以放置如下内容:
axios.get(second-url)
.then(function (response) {
document.getElementById(someplaceholder).innerHTML=response.data.
})