setInterval中的setTimeout循环

时间:2016-08-04 08:28:54

标签: javascript

我的代码类似于:

var count = 0;

setInterval(function() {
  if(count===0){
    console.log(123);
    count++;
  } else if(count>0) {
    for(i=1;i<=2;i++){
        (function(ind) {
            setTimeout(function() {
              console.log(ind);
            }, 1000 * ind);
        })(i);
    }
    count=0;
  }
},1000)

结果不是我的预期,我想为控制台日志实现的目标如下:

123
1
2
123
1
2
...
对于每个1000毫秒的间隔,

等等。另外我想问一下有更好的方法吗? setTimeout循环的数量(上述情况为2)每次都可能/可能不同。

1 个答案:

答案 0 :(得分:1)

  

这样的事情,首先打印123并等待1000ms,然后等待1000ms,最后2等待1000ms后再无限重复整个过程

如果您需要定期以1000毫秒为间隔,内部倒计时然后重置,您只需使用一个setInterval

&#13;
&#13;
// Uses a 100ms rather than 1000ms counter, stopping after two seconds
var count = 0;
var inner = 0;
var handle = setInterval(function() {
  if (inner == 0) {
    // Start again
    console.log(123);
    count = 0;
    // The number of "inner" counts to do
    inner = 2;
  } else {
    // An "inner" count
    ++count;
    --inner;
    console.log(count);
  }
}, 100);

// Stop it after two seconds, just for demo purposes
setTimeout(function() {
  clearInterval(handle);
}, 2000);
&#13;
&#13;
&#13;