递归函数的缓冲区溢出

时间:2014-11-08 12:31:08

标签: javascript jquery recursion

有一个函数animateTitle()可以定期更改浏览器标题 - 每3秒钟一次。

var animateTitle = function(countMessages) {
    if (isChatTab) {
        if (animStep) {
            document.title = "New messages ("+countMessages+") - "+origTitle;
        } else {
            document.title = origTitle;
        }
        animStep = !animStep;
    } else {
            document.title = origTitle;
            animStep = false;
    }

    time_title = setInterval(function(){ animateTitle(countMessages) }, 3000);
};

在我的脚本中,参数countMessages是实时更改并传递给函数animateTitle,因此这会导致缓冲区溢出,因为该函数是递归的。怎么解决?

1 个答案:

答案 0 :(得分:1)

目前,由于您没有清除现有间隔,因此每个函数调用都会创建新的间隔。您应该将时间间隔移到函数外部:

var animateTitle = function(countMessages) {
  if (isChatTab) {
    if (animStep) {
        document.title = "New messages ("+countMessages+") - "+origTitle;
    } else {
        document.title = origTitle;
    }
    animStep = !animStep;
  } else {
        document.title = origTitle;
        animStep = false;
  }
};
 time_title = setInterval(function(){ animateTitle(countMessages) }, 3000);