我一直在做一些关于取消ajax请求的研究,我在这里已经阅读了几个关于这个主题的线程。我发现了这个非常有用的话题:
Abort Ajax requests using jQuery
根据它,当你使用abort()方法时,请求在客户端取消,但不一定在服务器端取消。事情是我的要求需要一些繁重的计算,我希望能够在客户端和服务器端停止,如果它开始花费太长时间。 有什么方法可以做到吗?
ps:请求超时对我没有帮助。我正在使用JSF调用调用优化算法的bean,如果可能的话,我想按需停止算法。
答案 0 :(得分:0)
为了可靠地实现这一点,您需要使用繁重计算的代码就像在后台处理的长时间运行的任务一样。然后,您的请求将发出与该用户会话绑定运行的任务。要取消执行,则需要不同的请求。这可以在启动请求返回后在客户端使用计时器完成,如果是在设定的一段时间后发生,或者可以通过按钮或其他任何方式由用户启动。
另一种选择是让任务本身跟踪其时间,并在一段时间后自行中止。您可以将所需的时间作为参数或任何最佳效果传递,并在更长时间过后抛出异常。然后,您的服务器端代码将尝试/捕获例程并相应地响应每个场景。