2012-04-06 47 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

可能重复(http://stackoverflow.com/questions/1276970/cancelling-a-server-side-gwt-call) – 2012-04-06 08:57:53

回答

4

sendRequest()RequestBuilder回报实例Request类,它有cancel()方法,它允许您取消请求的方法。

E.g.

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

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

... 

//user clicked cancel button 
request.cancel(); 
[取消服务器端GWT电话]的
0

我从来没有使用过RequestBuilder,所以我不能确定没有更好的机制或者你已经描述过的功能。

这样做的一种方法是保留对回调的引用,并且如果用户按下“取消”在回调中设置了一个标志,表示它已被取消(setCancelled(true))。当收到回应时,请检查该标志,如果它是真的,就扔掉回应。

我不认为你实际上可以“杀死”这些请求。