setInterval中的Javascript setInterval计时器增加

时间:2013-07-24 11:40:03

标签: javascript jquery ajax setinterval blink

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

在该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

2 个答案:

答案 0 :(得分:1)

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

$(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

答案 1 :(得分:0)

$(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);

});