1

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

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

これを行う方法はありますか?

4

2 に答える 2

4

sendRequest()リクエストをキャンセルできるメソッドを持つRequestBuilderインスタンスRequestクラスを返すメソッド。cancel()

例えば

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

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

...

//user clicked cancel button
request.cancel();
于 2012-04-06T08:20:34.877 に答える
0

私は RequestBuilder を使用したことがないので、より良いメカニズムや、既に説明した機能を実行する何かがないかどうかはわかりません。

これを行う 1 つの方法は、コールバックへの参照を保持し、ユーザーが [キャンセル] を押した場合にコールバックにフラグを設定して、キャンセルされたことを示すことです ( setCancelled(true))。応答を受信したら、そのフラグを確認し、true の場合は応答を破棄します。

リクエストを実際に「殺す」ことはできないと思います。

于 2012-04-06T08:07:21.260 に答える