Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以1秒的间隔重复函数一定次数_Javascript_Jquery_Timer_Setinterval_Sleep - Fatal编程技术网

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

Javascript 以1秒的间隔重复函数一定次数,javascript,jquery,timer,setinterval,sleep,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;

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

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();
  }
}
函数睡眠(毫秒){
var start=new Date().getTime();
对于(变量i=0;i<1e7;i++){
如果((新日期().getTime()-start)>毫秒){
打破
}
}
}
函数timerCreate(){
对于(i=0;i<10;i++){
睡眠(1000);
minusOneSec();
}
}
我想做的就是每隔一秒钟执行十次minusOneSec()函数。(我从StackOverflow中看到的一个答案中获取了sleep()函数的代码,我不记得是谁提出的,所以如果你知道的话,请告诉我,这样我可以相信他们。)它是有效的,但现在我意识到这个sleep函数在运行时会停止页面中的所有java脚本。这是真的吗?我也试过这样做:

function timerCreate() {
  for (i = 0; i < 10; i++) {
    setInterval(minusOneSec, 1000);
  }
}
函数timerCreate(){
对于(i=0;i<10;i++){
设置间隔(最小一秒,1000);
}
}

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

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

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