代码之家  ›  专栏  ›  技术社区  ›  CybeX

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

  •  5
  • CybeX  · 技术社区  · 7 年前

    为了我的比赛!我需要某种形式的异步编程。简单地说,我需要在后台处理时显示一个视图,然后重定向或呈现一个新表单。

    question 已被询问,但没有回应。我已经查看了播放文档页面,在那里我没有找到任何解决方案。

    我试图修改 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;
        }
    

    路线入口

    GET     /message                 controllers.AsyncController.message
    

    目的:

    我在这里的目的是为了传递信息 Waiting 5 seconds... verified 第页(用于已验证的帐户)。

    我是否在正确的轨道上实现了我最初的目标,在哪里可以找到类似的好例子?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Haijin    7 年前

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

    第一个条目显示消息“等待5秒…”,同时它向第二个条目发出AJAX调用。第二个条目的控制器执行计算/休眠5秒,并返回所需的内容,这些内容将通过Javascript呈现在第一个页面上。

    在第一个网页中,您可以放置以下内容:

      axios.get(second-url)
          .then(function (response) {
            document.getElementById(someplaceholder).innerHTML=response.data.
          })