2012-04-06 10 views
1

実行に時間がかかるGWT(2.4)RequestBuilderのクエリがあります。このような場合は、ユーザーがリクエストをキャンセルできるようにしたいと考えています。サーバー側の処理を中止するクエリだけであるため、有害な副作用はありません。ソリューションに問題がある場合は、無駄なサーバー側のCPUサイクルも問題になりません。状況の例を次に示します。進行中のGWT RequestBuilderリクエストを中止するにはどうすればよいですか?

RequestBuilder requestBuilder = new RequestBuilder(
    RequestBuilder.GET, FOOBAR_SERVICE_URL); 

requestBuilder.sendRequest("", 
    new RequestCallback<ResultList>() { .... }); 

// I'd like to cancel the request when a Cancel button is pressed 

どうすればいいですか?

+0

[サーバー側GWT呼び出しのキャンセル](http://stackoverflow.com/questions/1276970/cancelling-a-server-side-gwt-call) –

答えて

4

sendRequest()メソッドのRequestBuilderは、cancel()メソッドを持つインスタンスRequestクラスを返します。これによりリクエストをキャンセルできます。

など。

RequestBuilder requestBuilder = new RequestBuilder(
    RequestBuilder.GET, FOOBAR_SERVICE_URL); 

Request request = requestBuilder.sendRequest("", 
    new RequestCallback<ResultList>() { .... }); 

... 

//user clicked cancel button 
request.cancel(); 
0

私はRequestBuilderを一度も使用していないので、あなたがすでに説明している機能を実行しているかどうかはわかりません。

これを行うには、コールバックへの参照を保持し、ユーザーが「キャンセル」を押した場合、コールバックのフラグを設定して、キャンセルされたことを通知します(setCancelled(true))。レスポンスを受け取ったら、そのフラグをチェックし、それが真であればレスポンスを放棄してください。

私はあなたが実際にリクエストを「殺す」とは思えません。

関連する問題