ノートをリダイレクト/ビューをレンダリング:私は私のプレイのためのフレームワークにプレイフレームワーク - 処理をしている間X秒後に
を再生する新しいです!私はいくつかの形式の非同期プログラミングが必要です。つまり、バックグラウンドで処理している間にビューを表示し、その後にリダイレクトや新しいフォームを表示する必要があります。
このquestionは返信なしで尋ねられました。私はPlayのドキュメントページを見てきましたが、そこには解決策が見つかりませんでした。
を私はplay starter example
で与えられているAsynchController
を変更しようとしました:私は試してみました何
。しかしながら、にナビゲートするとき、機能は、設定された「忘れられた」スケジュールされたタスクの代わりに、より多くの睡眠として行動するように見えた。すなわち、さらなるコーディングを続けることができる。
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
ページ(アカウントの確認用)の "future"(これは正しい?)に達するでしょう。
私は私の本来の目標を正しい軌道に乗っていますが、どこで似たような良い例が得られますか?
あなたがサーバーの応答を処理するために、任意のクライアントのロジックを使用していますか? – tgk
クライアント側で特定のレンダリングロジックを使用してチャンクレスの応答を使用しない限り、このように複数の応答を返す解決策はないと確信しています。 – cchantep
@cchantep Play Frameworkに関して「クライアント側」という意味を定義してください。どのようなクライアント側と何が "サーバー側"(私は、サーバー側の機能がコントローラのルーティングコントローラのコードを実行していると仮定します) – KGCybeX