【问题标题】:How to stop interval function如何停止区间函数
【发布时间】:2014-02-14 04:58:04
【问题描述】:

我正在尝试停止使用 return 语法:

<script>
   $(document).ready(function() {
      setInterval(function() {
         var url = "../view/anychange.php";
         $.getJSON(url, function(data) {
          f(data.exists == 0){
        alert("0"); 
          } else {
        alert("1");
            return; 
          }
      });
    }, 5000);


   });
</script>

该函数每 5 秒验证一次我的表中是否存在数据。

data.exists == 1alert("1"))时我需要停止该功能。

【问题讨论】:

    标签: javascript function return


    【解决方案1】:
    <script>
       $(document).ready(function() {
          var id;
          id = setInterval(function() {
             var idRefCopy = id; // You need this otherwise you'll get a reference exception
             var url = "../view/anychange.php";
             $.getJSON(url, function(data) {
             if(data.exists == 0){
               alert("0"); 
             } else {
               alert("1");
               clearInterval(idRefCopy);
               return; 
             }
          });
        }, 5000);
       });
    </script>
    

    【讨论】:

      【解决方案2】:

      您必须在变量内定义间隔,然后将其清除。试试这个:

      <script>
         $(document).ready(function() {
            var interval = setInterval(function() {
               var url = "../view/anychange.php";
               $.getJSON(url, function(data) {
                if(data.exists == 0){
              alert("0"); 
                } else {
                   clearInterval(interval);
                }
            });
          }, 5000);
      
      
         });
      </script>
      

      您的代码中有错字(我已在此处修复,它是“f”而不是“if”;)希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        您需要清除间隔,这将防止您的函数再次被触发。区间参考见this

        这应该是您的代码:

        $(document).ready(function() {
            var i = setInterval(function() {
                var url = "../view/anychange.php";
                $.getJSON(url, function(data) {
                    f(data.exists == 0) {
                        alert("0"); 
                    } else {
                        alert("1");
                        clearInterval(i);
                    }
                 });
            }, 5000);
        });
        

        【讨论】:

          【解决方案4】:

          clearInterval 怎么样?

          var myVar = setInterval(function(){myTimer()},1000);
          
          function myTimer()
          {
              var d = new Date();
              var t = d.toLocaleTimeString();
              document.getElementById("demo").innerHTML=t;
          }
          
          function myStopFunction()
          {
              clearInterval(myVar);
          }
          

          来源:W3Schools

          【讨论】:

          • 反对 a) 不使用 OPs 代码,2) 参考不足。请使用 MDN 或类似的代替可疑的 w3fools
          【解决方案5】:

          我强烈建议你不要访问你的服务器,除非你知道你的 ajax 已经完成

          这个例子会检查,但只有在服务器返回之后

          var counter = 0;
          function checkData() {
            var url = "../view/anychange.php";
            $.getJSON(url, function(data) {
              if (data.exists == 0) {
                $("#someContainer").html("Not yet on attempt #"+(counter++));
                setTimeout(checkData,5000);
              } else {
                $("#someContainer").html("found on attempt #"+(counter++));
              }
            });
          }
          $(function() {
            checkData();
          });
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-29
            相关资源
            最近更新 更多