【问题标题】:Subsequent ajax calls with delay延迟的后续ajax调用
【发布时间】:2014-03-04 10:04:45
【问题描述】:
var F = function() {
    $.ajax({
        .
        .
        .
    })
    .done(function() {
        console.log('Hey, I am done');
        setInterval(F, 10000);
    });
}

所以我想每 10 秒更新一次。问题是每次ajax调用完成时都会调用自己两次。所以输出是:

Hey, I am done //First call (without delay)

// After 10 seconds
Hey, I am done

// After 20 seconds
Hey, I am done
Hey, I am done

// After 30 seconds
Hey, I am done
Hey, I am done
Hey, I am done
Hey, I am done

然后继续…… 我显然在这里遗漏了一些东西!谁能赐教?

【问题讨论】:

  • 您应该在回调之外的.done()setInterval(F) 中使用setTimeout
  • 哦,谢谢大家,我只能“接受”一个答案,所以我“接受”第一个答案

标签: jquery ajax setinterval


【解决方案1】:

不要使用间隔,使用超时:

setTimeout(F, 10000);

顺便说一句,您应该在完成时调用它,而不是成功:

 .always(function() {
        setTimeout(F, 10000);
    });

【讨论】:

    【解决方案2】:

    这是因为您有一个间隔,它创建了一个对 F 的请求队列,该队列每次增加 1。改用 setTimeout。

    【讨论】:

      【解决方案3】:

      只需添加额外的代码行

          done(function() {
                  console.log('Hey, I am done');
                  clearInterval(F); // clear the interval F
                  setInterval(F, 10000); //reset the interval F
              });
      

      【讨论】:

        猜你喜欢
        • 2017-09-22
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 2013-03-10
        • 1970-01-01
        相关资源
        最近更新 更多