Javascript setInterval内的setInterval计时器增加

Javascript setInterval内的setInterval计时器增加,javascript,jquery,ajax,setinterval,blink,Javascript,Jquery,Ajax,Setinterval,Blink,我有一个ajax请求,它使用setInterval每5秒刷新一个页面 在这个ajax请求中,我有另一个setInterval函数,如果条件为真,它每半秒闪烁一次 在最初的ajax调用之后,它似乎工作得很好。但是,每5秒刷新一次ajax刷新,我的闪烁功能计时器就会减半,速度实际上会翻倍 任何帮助都将不胜感激,谢谢 代码如下: $(document).ready(function() { var refreshRate = 5000; var autoRefresh = setInt

我有一个ajax请求,它使用setInterval每5秒刷新一个页面

在这个ajax请求中,我有另一个setInterval函数,如果条件为真,它每半秒闪烁一次

在最初的ajax调用之后,它似乎工作得很好。但是,每5秒刷新一次ajax刷新,我的闪烁功能计时器就会减半,速度实际上会翻倍

任何帮助都将不胜感激,谢谢

代码如下:

$(document).ready(function() {
    var refreshRate = 5000;
    var autoRefresh = setInterval(
      function ()  // Call out to get the time
        {
          $.ajax({
            type: 'GET',
            success: function(data){
                document.getElementById('data').innerHTML=data;

                var blink = setInterval (function () {
                  var blink_cell = $("#blink_div").html();
                  if (blink_cell > 0) {
                    $("#blink_div").toggleClass("blink");
                  } else {
                    $("#blink_div").addClass("invisible");
                  }
                },500);

          } // end success
        });  // end ajax call
     }, refreshRate);// end check
  }); // end ready

关注变量的范围,并在启动新变量之前清除闪烁间隔

$(document).ready(function() {
    var refreshRate = 5000;
    var blink = -1;
    var autoRefresh = setInterval(
      function ()  // Call out to get the time
      {
          $.ajax({
            type: 'GET',
            success: function(data){
                document.getElementById('data').innerHTML=data;
                if(blink>-1) clearInterval(blink);
                blink = setInterval (function () {
                  var blink_cell = $("#blink_div").html();
                  if (blink_cell > 0) {
                    $("#blink_div").toggleClass("blink");
                  } else {
                    $("#blink_div").addClass("invisible");
                  }
                },500);

          } // end success
        });  // end ajax call
     }, refreshRate);// end check
  }); // end ready

您尚未停止旧的
设置间隔
,因此每次调用此选项时,您都会更频繁地闪烁。是否使用clearInterval完成此操作?具体在哪里?如果已经有一个计时器在运行,就不要启动新的计时器。有没有更好的方法来处理这样的事情?如果该div的innerHTML高于0,我需要每半秒闪烁该div的背景色。这很好。您只需检查是否已经运行了
setInterval()
。如果你有,你就不必再做了。将
blink
放入函数外部的变量中,并检查它是否已设置。谢谢,这正是我想要的。非常有帮助!看起来比我想象的要容易。谢谢你的帮助!这似乎重新编写了一点代码,我并不反对。我只是在合作完成这项工作,所以目前可能并不理想,没有问题;主要是用setTimeout更改setInterval。
$(document).ready(function () {

  var _url = ''; // Put your URL here.
  var _checkServerTime = 5000;
  var _blinkTime = 500;

  function _blink() {
    // Do something here.
    var condition = true; // Put condition here.
    if (condition) setTimeout(_blink, _blinkTime);
  }

  function _handleData(data) {
    $('#data').html(data);
    _blink();
  }

  function _checkServer() {
    $.get(_url, _handleData);
  }

  setInterval(_checkServer, _checkServerTime);

});