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驗證它。解決了 :-) –