この質問はとても役に立ちます。複数の AsyncCallback を呼び出すことについていくつか質問がありますが、それらをループで呼び出す方法はわかりませんでした。
これが私の問題です。Gwt-platform を使用してプロジェクトを行っています。これらのコードを持つプレゼンター TestPresenter.java を取得しました。
@Inject
DispatchAsync dispatchAsync;
private AsyncCallback<GetDataResult> getDataCallback = new AsyncCallback<GetDataResult>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(GetDataResult result) {
// do Something o show the gui here
}
};
public void load_All_Gui_At_Once() {
for(int i=0; i<5; i++) {
GetData getDataAction=new GetData(i);
dispatchAsync.execute(getDataAction, getDataCallback);
}
}
問題は、プログラムがデータを表示するが、間違った順序で表示されることです。これは、前の非同期メソッドがまだ終了していない間に、次の非同期メソッドの実行が開始されたためです。
2 番目の呼び出しを onSuccess 内に配置することを提案する人もいますが、それは単純な 2 つの同期呼び出しのみです。しかし、私の場合、不明な数の Async 呼び出しをループする必要があります。