2012-04-06 40 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))。當收到迴應時,請檢查該標誌,如果它是真的,就扔掉迴應。

我不認爲你實際上可以「殺死」這些請求。

相關問題