KGC*_*beX 5 java asynchronous routes playframework playframework-2.0
注意:我是新手玩框架
对于我的游戏!项目,我需要某种形式的异步编程.简单地说,我需要显示一个视图,同时在后台进行处理,然后再渲染重定向或新表单.
这个问题一直没有回复.我看过Play文档页面,我没有找到任何解决方案.
我尝试过的:
我试图修改AsynchController给出的play starter example.然而,当导航到时http://localhost/message,该功能似乎更多地作为睡眠而不是被设置和"忘记"的预定任务,即可以继续进行进一步编码.
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;
}
Run Code Online (Sandbox Code Playgroud)
路线入口
GET /message controllers.AsyncController.message
Run Code Online (Sandbox Code Playgroud)
目的:
我的目标Waiting 5 seconds...是显示消息,然后延迟+/- 5秒.此后它将到达"未来"(这是正确的吗?),由此它将呈现视图(或重定向到控制器),在这种情况下是verified页面(用于帐户验证).
我是否按照我最初的目标走在正确的轨道上,哪里可以得到类似的好例子?
我有一个简单的解决方案,但你必须在路线中设置 2 个条目。
第一个条目显示消息“等待 5 秒...”,同时它向第二个条目发出 AJAX 调用。第二个条目的控制器进行计算/睡眠 5 秒,并返回所需的内容,该内容将由 Javascript 呈现在第一页上。
在第一个网页中,您可以输入以下内容:
axios.get(second-url)
.then(function (response) {
document.getElementById(someplaceholder).innerHTML=response.data.
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |