Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在GWT中,如果我们现在刷新浏览器,则异步调用已经在进行中,该事件正在触发,但进程尚未完成_Java_Gwt - Fatal编程技术网

Java 在GWT中,如果我们现在刷新浏览器,则异步调用已经在进行中,该事件正在触发,但进程尚未完成

Java 在GWT中,如果我们现在刷新浏览器,则异步调用已经在进行中,该事件正在触发,但进程尚未完成,java,gwt,Java,Gwt,在GWT中,一个异步调用已经在进行中,我将在完成此调用后触发一个事件。如果我们现在刷新浏览器,该事件正在触发,但进程尚未完成,我如何解决此问题。请帮忙 这是我正在使用的代码块: private void rpcMethod(final String nounToTrack, final ImportResultDTO importResult, final String selectedNounName) { service.checkNounImportExp

在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);
                }
            }
        });
    }
private void rpc方法(最终字符串nounotrack、最终ImportResultDTO importResult、最终字符串selectedNounName){
service.checkNonuImportExportStatus(NonuntTrack,new AsyncCallback()){
@凌驾
失败时公开作废(最终可丢弃){
如果(捕捉到StatusCodeException的实例){
eventBus.fireEvent(新的CurrentNotificationChangedEvent(true));
}否则{
已捕获。printStackTrace();
rpactoremovenounImportExportStatusAttribute(nounotTrack);
}
clearDataGridHeaders();
}
@凌驾
成功时公共无效(最终字符串结果){
if(result.equals(BodDeskMessageConstants.COMPLETED)| | result.contains(BodDeskMessageConstants.EXCEPTIONSTATUS)){
if(result.contains(BodDeskMessageConstants.EXCEPTIONSTATUS)){
eventBus.fireEvent(新的CurrentNotificationChangedEvent(true));
}否则{
log.info(“新通知正在发生……3”);
eventBus.fireEvent(新的CurrentNotificationChangedEvent(true));
}
}否则{
RPCTocheckNonuImportExportStatus(NonuntTrack、importResult、SelectedNonueName);
}
}
});
}
如果rpc调用失败/成功,我们将触发一个事件以查看新通知是否可用。现在,我启动了这个rpc调用,在执行rpc调用时刷新了浏览器。事件正在触发,但进程尚未完成。请建议如何限制事件的触发?

当您卸载页面(刷新页面时也会发生这种情况)时,所有正在进行的请求都会被中止,并且您会得到一个
StatusCodeException
,其中
getStatusCode()
0
(注意:无论终止请求的触发器是什么,您都会得到相同的行为:网络错误等)


然后,您可以在您的
onFailure
中检查状态代码,但如果您不希望状态代码0的其他情况出现误报,则必须侦听
WindowClosingEvent
,并在那里设置一个标志。只需确保在某些其他事件(例如,成功响应或非0失败)时重新设置标志即可以防用户取消导航。

我想当套接字关闭时,您会收到StatusCodeException。请检查状态代码。也许您可以通过查找特殊的状态代码来解决问题。