取消gwt rpc调用
在这个例子中,有一个关于如何使用取消gwt rpc调用,gwt,gwt-rpc,Gwt,Gwt Rpc,在这个例子中,有一个关于如何使用定时器#时间表创建超时逻辑的详细描述。但这里有一个陷阱。我们有两个rpc请求:第一个在服务器上进行大量计算(或者可能从数据库中检索大量数据),第二个是立即返回结果的微小请求。如果我们发出第一个请求,我们将不会立即收到结果,相反,我们将有一个超时,超时后我们发出第二个微小请求,然后示例中的abortFlag将为true,因此我们可以检索第二个请求的结果,但也可以检索之前超时的第一个请求的结果(因为第一次调用的AsyncCallback对象未被销毁) 因此,我们需要在
定时器#时间表
创建超时逻辑的详细描述。但这里有一个陷阱。我们有两个rpc请求:第一个在服务器上进行大量计算(或者可能从数据库中检索大量数据),第二个是立即返回结果的微小请求。如果我们发出第一个请求,我们将不会立即收到结果,相反,我们将有一个超时,超时后我们发出第二个微小请求,然后示例中的abortFlag
将为true,因此我们可以检索第二个请求的结果,但也可以检索之前超时的第一个请求的结果(因为第一次调用的AsyncCallback
对象未被销毁)
因此,我们需要在超时发生后取消第一个rpc调用。我如何才能做到这一点?让我给你一个类比 你,老板,打电话给一个供应商,想得到一些产品信息。供应商说他们需要给你回电话,因为收集信息需要一些时间。所以,你给了他们你的工头的联系方式 你的工头等待电话。然后你告诉工头,如果需要超过30分钟,就取消信息请求 你的工头认为你疯了,因为他不能取消请求,因为他没有一个帐户,使他有权访问供应商的订购系统 因此,你的工头在30分钟后根本不理会供应商的任何回应。你聪明的工头在手机中设置了计时器,30分钟后不理会供应商的电话。即使你杀死了工头,切断了所有通信链接,供应商仍将忙着为你的请求提供服务 GWT客户端上没有什么可以取消的。回调只是一个等待调用的javascript对象 要取消调用,您需要告诉服务器端停止浪费cpu资源(如果这是您的问题)。您的服务器端必须编程为提供一个服务API,调用该API时将取消作业并立即返回以触发GWT回调 您可以刷新页面,这将放弃页面请求并关闭套接字,但服务器端仍将运行。当服务器端完成其任务并尝试执行http响应时,它将失败,并在服务器日志中指出它已丢失客户端套接字 这是一个非常直截了当的推理 因此,它属于servlet/服务的设计,即如何通过后续请求识别先前的请求 级联回调 如果请求2依赖于请求1的状态,则应执行级联回调。如果请求2要在成功时运行,则应将请求2放入回调的onFailure块中。而不是一个接一个地提交两个请求 否则,计时器将触发请求2,请求2将承担两项责任:
- 告诉服务器取消上一个请求
- 获取一小部分信息
- 告诉服务器取消上一个请求
- 获取一小部分信息
com.google.gwt。http.client.Request
来自y