我有一些由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


你有什么想法吗?

最佳答案

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();

10-01 13:38