GWT不支持同步Ajax,因此您必须使用异步模式对应用程序进行编码。
GWT用于执行请求的低级对象是XMLHttpRequest(旧的IE版本除外),并且GWT总是
open()在async设置为true的情况下调用其方法。因此,拥有同步Ajax的唯一方法是维护自己的
XMLHttpRequest.java。但是同步ajax是个坏主意,甚至jQuery也已弃用这种可能性。
因此,gwt中的正常方式应该是方法返回
void,并且在响应可用时传递带有回调的附加参数以执行。
public void getFolderJson(String path, Callback<String, String> callback) { RequestBuilder builder = new RequestBuilder(...); try { builder.sendRequest(null, new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) { callback.onSuccess(response.getText()); } @Override public void onError(Request request, Throwable exception) {} callback.onFailure(exception.getMessage()); }); } catch (RequestException e) { callback.onFailure(exception.getMessage()); } }我宁愿为此使用gwtquery
Promises语法,而不是请求构建器之一:
Ajax.get("http://localhost/folder?sessionId=foo&path=bar") .done(new Function(){ public void f() { String text = arguments(0); } });


