簡體   English   中英

播放框架 - 在X秒后進行處理/重定向時渲染視圖

[英]play framework - render view while doing processing/redirect after X seconds

注意:我是新手玩框架

對於我的游戲! 項目,我需要某種形式的異步編程。 簡單地說,我需要顯示一個視圖,同時在后台進行處理,然后再渲染重定向或新表單。

這個問題一直沒有回復。 我看過Play文檔頁面,我沒有找到任何解決方案。

我嘗試過的:

我試圖修改play starter example給出的AsynchController 然而,當導航到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...的消息,然后是+/- 5秒延遲。 此后它將到達“未來”(這是正確的嗎?),由此它將呈現視圖(或重定向到控制器),在這種情況下是verified頁面(用於帳戶驗證)。

我是否按照我最初的目標走在正確的軌道上,哪里可以得到類似的好例子?

我有一個簡單的解決方案,但您必須在路線中設置2個條目。

第一個條目顯示消息“Waiting 5 seconds ...”,同時它向第二個條目發出AJAX調用。 第二個條目的控制器進行計算/休眠5秒,並返回所需的內容,這些內容將通過Javascript在第一頁上呈現。

在第一個網頁中,您可以輸入以下內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM