【问题标题】:i would like to stop ajax request after 2 minutes [closed]我想在 2 分钟后停止 ajax 请求 [关闭]
【发布时间】:2015-12-21 15:51:12
【问题描述】:

我的 ajax 函数每 15 秒运行一次。我想在 2 分钟后停止它。

我该怎么做?

 window.setInterval(function () {
      var request = $.ajax({
         ...
      })
 }, 15000);

【问题讨论】:

  • erm...其余的代码发生了什么?

标签: javascript php ajax xmlhttprequest


【解决方案1】:

使用clearIntervalclearInterval() 方法清除使用setInterval() 方法设置的计时器。

var request;
var _timer = setInterval(function() {

  request = $.ajax({
    ...
  });

}, 15 * 1000);

setTimeout(function() {

    clearInterval(_timer);
    request.abort(); // If you want to abort the xhr which are still executing after 2 minutes

}, 2 * 60 * 1000);

【讨论】:

  • 另一种选择是在主计时器中进行七次迭代后进行。
  • @nicael 是的,你也可以这样做。
【解决方案2】:
var t=0;
var i=15000;
var m=Math.abs( 2 * 60 * 1000 );

var tmr=window.setInterval( function () {
     var request = $.ajax({ /* do something */ });
     t+=i;
     if( t >= m ) clearInterval( tmr );
}, i );

注意到@Jay!

与@void 发布的答案几乎相同 - 除了不终止活动的 ajax 请求。要取消间隔,必须将其分配为一个变量,在调用clearInterval 方法时可以引用该变量。

【讨论】:

  • 为什么 OP 应该尝试这个? 好的答案将始终解释所做的事情以及这样做的原因,不仅适用于 OP,也适用于 SO 的未来访问者。
猜你喜欢
  • 1970-01-01
  • 2018-01-25
  • 2011-01-13
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多