1

我一直在做一些关于取消 ajax 请求的研究,并且我在这里阅读了几个关于这个主题的线程。我发现了这个非常有用的主题:

使用 jQuery 中止 Ajax 请求

根据它,当您使用 abort() 方法时,请求在客户端被取消,但不一定在服务器端。事情是我的请求需要一些繁重的计算,如果它开始花费太长时间,我希望能够在客户端和服务器端停止。有什么办法可以做到吗?

ps:请求的超时在这里对我没有帮助。我正在使用 JSF 调用一个调用优化算法的 bean,如果可能的话,我想按需停止该算法。

4

1 回答 1

0

为了可靠地实现这一点,您需要使计算量大的代码像在后台处理的长时间运行的任务一样。然后,您的请求将发出与该用户会话相关联的任务以运行。那么,要取消执行,就需要一个不同的请求。这可以在发起请求返回后使用客户端上的计时器来完成,如果它要在设定的时间段后发生,或者它可以由用户通过按钮或其他方式启动。

另一种选择是让任务本身跟踪它的时间,并在一段时间后自行中止它。您可以将所需的时间作为参数传递或任何最有效的方法,如果经过更多时间,则抛出异常。然后,您的服务器端代码将尝试/捕获该例程并相应地响应每个场景。

于 2012-12-05T15:43:28.603 回答