我正在將本機Java應用程序轉換爲GWT。與服務器的通信僅在狀態更改期間發生,到目前爲止已通過阻止操作處理。GWT:用異步RPC替換阻塞調用
例如當前同步邏輯:
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);
}
是這種方法有效嗎?我需要注意什麼?
編輯:重寫我的僞代碼的例子,因爲他們很不清楚。
對不起,但我不明白如果你想委託實際操作一個線程,或者當「4什麼都不做......」 –
好吧,那有點讓人困惑。刪除它。 :) – vaughandroid
好的,那麼在第3步之後你會做什麼?輸入一個等待回調的忙等待循環來設置外部狀態? –