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

标签 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() 函数的代码,我不记得是谁提出了它,所以如果你知道,请告诉我,以便我可以信任他们。)它可以工作,但是现在我注意到这个 sleep 函数将停止页面中运行的所有java脚本。这是真的?我还尝试过的是:

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

但它所做的是连续运行 minusOneSec() 函数 10 次,然后等待一秒钟,然后该函数连续运行 10 次,依此类推。有没有一种方法可以实现我的意图,但允许其他 JavaScript 代码同时运行?如果需要的话我可以使用 jQuery。

最佳答案

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

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

关于javascript - 以 1 秒的间隔重复某个函数一定次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32455675/

相关文章:

c# - 带有计时器的简单应用程序正在消耗内存?

javascript - 如何保护 JavaScript 文件?

javascript - Angularjs 从 1.2.1 迁移到 1.3.9 会导致 html5mode 出现问题

javascript - 增加从js函数动态创建的表中行之间的间距

javascript - 查询内部解析云 For 循环

c# - 将计时器值存储在数据库中? C#

c# - TimerCallback 不返回值 C#

javascript - 带有 jquery ui 可排序问题的 jquery slim scroll

javascript - 单击 td 时更改 bgcolor?

javascript - 如何在 JavaScript 中将 .txt 文件中的数据保存到数组中?