【发布时间】:2014-07-01 11:58:01
【问题描述】:
在 GWT 中,异步调用已在进行中,我将在完成此调用后触发一个事件。如果我们现在刷新浏览器,该事件正在触发但该过程没有完成,我该如何解决这个问题。请帮忙。
这是我正在使用的代码块:
private void rpcMethod(final String nounToTrack, final ImportResultDTO importResult, final String selectedNounName) {
service.checkNounImportExportStatus(nounToTrack, new AsyncCallback<String>() {
@Override
public void onFailure(final Throwable caught) {
if (caught instanceof StatusCodeException) {
eventBus.fireEvent(new CurrentNotificationChangedEvent(true));
} else {
caught.printStackTrace();
rpcToRemoveNounImportExportStatusAttribute(nounToTrack);
}
clearDataGridHeaders();
}
@Override
public void onSuccess(final String result) {
if (result.equals(BodDeskMessageConstants.COMPLETED) || result.contains(BodDeskMessageConstants.EXCEPTIONSTATUS)) {
if (result.contains(BodDeskMessageConstants.EXCEPTIONSTATUS)) {
eventBus.fireEvent(new CurrentNotificationChangedEvent(true));
} else {
log.info("new notification is occurring..... 3");
eventBus.fireEvent(new CurrentNotificationChangedEvent(true));
}
} else {
rpcToCheckNounImportExportStatus(nounToTrack, importResult, selectedNounName);
}
}
});
}
如果 rpc 调用失败/成功,我们将触发一个事件以查看可用的新通知。现在,我开始了这个 rpc 调用,我在 rpc 调用执行时刷新了浏览器。事件正在触发,但过程尚未完成。请建议如何限制事件的触发?
【问题讨论】:
-
我认为当套接字关闭时你会得到一个 StatusCodeException。检查状态码。也许你可以通过寻找一个特殊的状态码来解决你的问题。