我正在将本机 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);
}
这种方法有效吗?我有什么需要注意的吗?
编辑:用伪代码重写了我的示例,因为它们非常不清楚。