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,所以我不能确定没有更好的机制或者你已经描述过的功能。

一种方法是保留对回调的引用,如果用户按下“取消”,则在回调上设置一个标志,表示它已被取消(setCancelled(true))。收到响应时,检查该标志,如果为真,则丢弃响应。

我认为您实际上不能“杀死”请求。

于 2012-04-06T08:07:21.260 回答