以 1 秒的间隔重复某个函数一定次数

Repeating a function with a 1 second interval a certain number of times

所以,我正在开发一个计时器,这是我现在的代码:

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() 函数十次。 (我从前段时间在 Whosebug 上看到的一个答案中获取了 sleep() 函数的代码,但我不记得是谁提出的,所以如果你知道请告诉我,这样我就可以相信他们。)它有效,但是现在我注意到这个休眠功能会在页面 运行ning 时停止页面中的所有 java 脚本。这是真的?我也尝试过的是:

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

但它所做的是 运行 连续 10 次 minusOneSec() 函数,然后等待一秒钟,然后连续 10 次函数,依此类推。有没有办法实现我的预期,但同时允许其他 java 脚本代码 运行?如有必要,我可以使用 jQuery。

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

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