1

私は ajax リクエストのキャンセルについていくつかの調査を行ってきました。このトピックに関するいくつかのスレッドをここで読みました。この非常に有益なトピックを見つけました:

jQuery を使用して Ajax リクエストを中止する

それによると、abort() メソッドを使用すると、リクエストはクライアント側でキャンセルされますが、サーバー側では必ずしもキャンセルされません。私の要求には重い計算が必要であり、時間がかかりすぎる場合はクライアント側とサーバー側の両方で停止できるようにしたいと考えています。それを行う方法はありますか?

ps: リクエストのタイムアウトは、ここでは役に立ちません。最適化アルゴリズムを呼び出す Bean を呼び出すために JSF を使用していますが、可能であればオンデマンドでアルゴリズムを停止したいと考えています。

4

1 に答える 1

0

これを確実に行うには、大量の計算を伴うコードを、バックグラウンドで処理される長時間実行タスクのように動作させる必要があります。次に、リクエストは、そのユーザーのセッションに結び付けて実行するタスクを発行します。実行をキャンセルするには、別のリクエストが必要になります。これは、開始リクエストが戻ってきた後にクライアント側でタイマーを使用して行うことができます。これは、一定時間後に発生する場合、またはユーザーがボタンなどで開始することもできます。

もう 1 つのオプションは、タスク自体がその時間を追跡し、一定の時間が経過するとタスクを中止することです。必要な時間をパラメーターまたは最適なものとして渡し、さらに時間が経過した場合は例外をスローできます。次に、サーバー側のコードがルーチンを試行/キャッチし、各シナリオに応じて応答します。

于 2012-12-05T15:43:28.603 に答える