Javascript setInterval内的setTimeout循环

Javascript setInterval内的setTimeout循环,javascript,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);

我有类似的代码:

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)
以此类推,每间隔1000ms。还有,我想问,有没有更好的方法?setTimeout循环的数量(上述情况下为2)每次都可能不同


像这样,首先打印123并等待1000毫秒,然后是1并等待1000毫秒,最后是2并等待1000毫秒,然后无限重复整个过程

如果您希望它以1000毫秒的间隔定期运行,内部倒计时然后重置,您可以使用单个
setInterval

//使用100ms而不是1000ms计数器,两秒钟后停止
var计数=0;
var内部=0;
var handle=setInterval(函数(){
如果(内部==0){
//重新开始
控制台日志(123);
计数=0;
//要执行的“内部”计数数
内=2;
}否则{
//“内在”计数
++计数;
--内在的;
控制台日志(计数);
}
}, 100);
//两秒钟后停止,只是为了演示
setTimeout(函数(){
间隙(手柄);

}, 2000);“…等等,每间隔1000毫秒…”您的内部
setTimeout
有时会超过1000毫秒。然后呢?像这样,先打印123等待1000毫秒,然后打印1等待1000毫秒,最后打印2等待1000毫秒,然后重复整个过程infinitely@T.J.Crowder是的,我重复了一遍123@T.J.Crowder对不起,我的错,我没注意。将删除我的评论,因为它们对解决方案没有帮助。
123
1
2
123
1
2
...