0
我想在异步方法调用之前在gwt中获取URL的HTTP响应。在gwt的异步调用之前获取HTTP响应
下面是我的工作代码,但我想在异步调用之前执行它。
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "http://localhost:8080");
try {
builder.sendRequest(null, new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
}
@Override
public void onError(Request request, Throwable exception) {
throw new UnsupportedOperationException("Not supported yet.");
}
});
} catch (RequestException ex) {
}
return response.getStatusCode();
另外请注意,我在我的项目中使用的JavaScript 。有什么办法可以在javaScript中编写这段代码,并在我的OnModuleLoad方法中检索响应?
任何建议将不胜感激。
您可以使用JavaScript/jQuery的承诺。 的Javascript承诺:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise jQuery的承诺: https://api.jquery.com/promise/ –
但即使您在调用RequestCallback(asyc)之前访问(获取)getStatusCode值,该值将无关紧要,可能是基本类型的默认值。您应该等到实际响应收到或失败,并且由于javascript是单线程的,您不能阻止等待,您只能等待使用回调。但是,正如@MaheshGosemath所说,你可以使用异步包装作为[Promise](https://github.com/gwtquery/gwtquery)或[Observable](https://github.com/intendia-oss/rxjava-gwt )。 –
我从客户端调用api。但我必须验证它到服务器端。所以我做了servlet并从javascript验证它。解决了 :-) –