以1秒间隔重复一次功能一定次数

时间:2015-09-08 10:43:21

标签: javascript jquery timer setinterval sleep

所以,我正在研究计时器,这是我现在的代码:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds) {
      break;
    }
  }
}

function timerCreate() {
  for (i = 0; i < 10; i++) {
    sleep(1000);
    minusOneSec();
  }
}

我想做的就是十次,每一秒,执行minusOneSec()函数。 (我从一段时间以前在StackOverflow中看到的答案中获取了sleep()函数的代码,我不记得是谁提出来的,所以如果你知道请告诉我,我可以相信它们。)它有效,但是现在我已经注意到这个睡眠功能会在页面运行时停止页面中的所有java脚本。这是真的?我也尝试了这个:

function timerCreate() {
  for (i = 0; i < 10; i++) {
    setInterval(minusOneSec, 1000);
  }
}

但它做的是连续10次运行minusOneSec()函数,然后等待一秒,然后连续10次执行该函数,依此类推。有没有办法做我想要的,但允许其他JavaScript代码同时运行?如有必要,我可以使用jQuery。

1 个答案:

答案 0 :(得分:2)

你只需要调用setInterval()一次(而不是循环)并检查里面的计数器。 setInterval()将继续执行传递的函数,直到我们清除间隔。

var i = 0, 
    interval = setInterval(function() {
        minusOneSec();
        i++;
        if(i >= 10) clearInterval(interval); // stop it
    }, 1000);