注:我是新來發揮框架發揮框架 - 渲染視圖,同時做處理/ X秒後重定向
對於我的發揮!項目,我需要某種形式的異步編程。簡而言之,我需要在後臺進行處理時顯示視圖,然後顯示重定向或新表單。
這個question已被問及沒有迴應。我查看了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
頁面(用於驗證帳戶)。
我在正確的軌道上與我的原始目標,我在哪裏可以得到一個類似的東西很好的例子?
你使用任何客戶端邏輯來處理服務器的響應? – tgk
除非在客戶端使用具有特定呈現邏輯的分塊響應,否則我懷疑是否有以這種方式返回多個響應的任何解決方案 – cchantep
@cchantep您能否根據Play Framework定義「客戶端」的含義?什麼是客戶端和什麼是「服務器端」(我假設服務器端功能正在執行控制器的代碼,路由到控制器) – KGCybeX