我正在将本地的 Java 应用程序转换为 GWT 。 与服务器的通信只在状态改变期间发生, 并且到目前为止一直通过阻塞操作进行处理 。
例如, 当前同步逻辑:
void onUserClickedSync() {
downloadData(); // blocking operation
uploadData(); // blocking operation
setState(DONE);
}
< 强势> 如何用那些使用非同步回击的阻截操作来取代阻截操作? 强 >
我目前的想法是基本上添加一系列“不做任何事情的”额外“busy ” 状态。 然后我用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);
}
这个方法有效吗?
" 强势 " EDIT: " 强势 " 重写我用假码写的例子,因为它们非常不清楚。