2

RequestBuilder用来超时的 GWT 请求需要太长时间:

RequestBuilder requestBuilder = _service.getStatistics(callback);
requestBuilder.setTimeoutMillis(5000);
try {
    requestBuilder.send();
} catch (RequestException e) {
    GWT.getUncaughtExceptionHandler().onUncaughtException(e);
}

有没有办法通知调用的远程服务调用在客户端超时并且应该被取消?

4

2 回答 2

5

除非您再次调用以告知远程服务先前的调用已取消!

于 2009-08-14T12:22:07.680 回答
1

这实际上取决于。如果服务器正在执行大量工作(并且您不在 Google App Engine 上),您可以保留 Request 并调用 request.cancel()。这将结束浏览器的请求,但服务器将继续工作。

根据您返回的数据格式,您可以让服务器在处理调用时定期将一些空数据刷新到客户端。如果客户端取消了请求并且 HTTP 连接终止,这将导致刷新抛出 IOException。然后,您可以捕获此请求并停止在服务器端处理该请求。

于 2009-08-20T12:34:22.007 回答