播放框架 - 在X秒后进行处理/重定向时渲染视图

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页面(用于帐户验证).

我是否按照我最初的目标走在正确的轨道上,哪里可以得到类似的好例子?

Hai*_*jin 2

我有一个简单的解决方案,但你必须在路线中设置 2 个条目。

第一个条目显示消息“等待 5 秒...”,同时它向第二个条目发出 AJAX 调用。第二个条目的控制器进行计算/睡眠 5 秒,并返回所需的内容,该内容将由 Javascript 呈现在第一页上。

在第一个网页中,您可以输入以下内容:

  axios.get(second-url)
      .then(function (response) {
        document.getElementById(someplaceholder).innerHTML=response.data.
      })
Run Code Online (Sandbox Code Playgroud)