我在GWT中執行throw執行時遇到問題。所以我想在位於「服務器端」的客戶端顯示一個簡單的字符串列表。好吧,我在我的主類中有這個屬性:GWT異步調用執行順序問題
private final GreetingServiceAsync greetingService = Util.getInstance(); //這就像>輸入GWT.create(GreetingService.class); public ArrayList songs = new ArrayList();
,並在我的onModuleLoad()方法,我必須使異步調用服務器類的另一個私有方法的調用:
songs.addAll(getSongsList());
所以我getSongsList方法如下:
public ArrayList<String> getSongsList() {
final int defaultSize = 4;
final ArrayList<String> temp = new ArrayList<String>();
GWT.log("Enter in getSongsLists");
greetingService.greetSongMostPopular(defaultSize,
new AsyncCallback<ArrayList<String>>() {
public void onSuccess(ArrayList<String> result) {
GWT.log("Result is:" + result);
temp.addAll(result);
GWT.log("Case 1 TEMP= " + temp);
}
public void onFailure(Throwable caught) {
// throw new
// UnsupportedOperationException("Not supported yet.");
Window.alert("Error greeting data");
}
});
GWT.log("CASE 2 TEMP = " + temp);
return temp;
}
我的問題是,在案例1,我得到
[INFO] [MainModule] - 案例1個TEMP = [宋1 ,Song 2,Song 3,Song 4]
但是在CASE 2中我得到ArrayList爲空!
[INFO] [MainModule] - 案例1 TEMP = []
我在做什麼錯?
在此先感謝!
嗨,我很喜歡類似的問題。你能告訴你做了什麼嗎?我的問題是在這個鏈接http://stackoverflow.com/q/9788970/1046176 – NewCodeLearner