【问题标题】:Javascript: Stop SetInterval [duplicate]Javascript:停止 SetInterval [重复]
【发布时间】:2014-02-02 21:51:59
【问题描述】:

我不知道如何停止我的 setinterval 代码。我在 stackoverflow 上看过其他帖子,但没有任何效果。

$(document).ready(function() {
  var content =  tinyMCE.getContent('content').value;
});
var myinterval = setInterval(function() {
  $.get("status.php?id=<?php echo $id; ?>",function(data){     
    val = content.value;
    if (val != data) {
      $.pnotify({
        title: 'Regular Notice',
        text: 'Check me out! I\'m a notice.'
      });
      clear();
    }
  });
}, 1000 * 2 * 1); 

function clear(){
    clearInterval(myinterval);
}

【问题讨论】:

  • setInterval() 返回一个 ID,您应该使用该 ID 清除间隔。
  • 为什么这被否决了?
  • 在这种情况下,无论如何我都不会使用设置间隔,当来自 $.get 的 ajax 调用完成时,我会使用 setTimeout,以确保在开始下一个调用之前完成上一个调用!

标签: javascript jquery setinterval


【解决方案1】:

setInterval() 返回唯一的间隔 ID,您可以将其传递给 clearInterval() 以取消重复操作。

//Capture interval id in a variable
var myinterval = setInterval(function () {
    $.get("status.php?id=<?php echo $id; ?>", function (data) {
        val = content.value;
        if (val != data) {
            $.pnotify({
                title: 'Regular Notice',
                text: 'Check me out! I\'m a notice.'
            });

            //Call clear method
            clear();
        }
    });
}, 1000 * 2 * 1);

function clear() {
    //Call method with defined ID
    clearInterval(myinterval);
}

【讨论】:

  • 这里可能有一些解释
  • 找不同的游戏会导致糟糕的答案。
  • @Satpal,这段代码应该按原样工作,还是我必须以某种方式运行变量 myinterval?因为如果我替换之前的东西是行不通的。
  • @satpal,没关系,我明白了。谢谢!
  • @Cody,你得到了什么?你编辑了问题
【解决方案2】:

您必须捕获间隔 id 并将其传递给clearInterval

var intervalId = setInterval(function() {

clearInterval(intervalId);

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 2013-06-04
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多