ネイティブJavaアプリをGWTに変換中です。サーバーとの通信は状態変化時にのみ発生し、これまではブロッキング操作で処理されていました。
例:現在の同期ロジック:
void onUserClickedSync() {
downloadData(); // blocking operation
uploadData(); // blocking operation
setState(DONE);
}
ブロッキング操作を非同期コールバックを利用する操作に置き換えるにはどうすればよいですか?
私の現在の考えは、本質的に何もしない余分な「ビジー」状態の束を追加することです。次に、RPCからのコールバックを使用して、ロジックを続行できる次の状態をトリガーします。
たとえば、同期ロジックは次のようになります。
void onUserClickedSync() {
rpc.downloadData(new AsyncCallback<Data> {
public void onSuccess(Data result) {
//...
onDownloaded();
}
//...
});
setState(WAITING_FOR_DOWNLOAD);
}
void onDownloaded() {
rpc.uploadData(new AsyncCallback<Void> {
public void onSuccess(Void void) {
//...
setState(DONE);
}
//...
});
setState(WAITING_FOR_UPLOAD);
}
このアプローチは有効ですか?気をつけなければならないことはありますか?
編集:非常に不明瞭だったので、私の例を擬似コードで書き直しました。