Javascript 对于设置超时间隔增加的循环

Javascript 对于设置超时间隔增加的循环,javascript,Javascript,嗨,我正在尝试让for循环以每次递增的间隔运行3次。我希望循环每次运行时都将文本输出到控制台,但我无法阻止循环一次全部运行并显示done、finished和done,然后两次finished。代码: function tellMeWhenDone () { for(var i=0; i<3; i++) { if (i === 0) var text = console.log('done'); else i

嗨,我正在尝试让for循环以每次递增的间隔运行3次。我希望循环每次运行时都将文本输出到控制台,但我无法阻止循环一次全部运行并显示done、finished和done,然后两次finished。代码:

function tellMeWhenDone () {

  for(var i=0; i<3; i++) {
          if (i === 0)
                  var text = console.log('done');

          else if (i === 1)
                  var text = console.log('and done');

          else (i === 2)
                  var text = console.log('finished');

          time(i);
}
}

     function time (i){
             setInterval(function(text){
        return text;
      }, 1000*(i+1))
}
tellMeWhenDone();
函数tellMeWhenDone(){

对于(var i=0;i设置一个重复事件。setTimeout将只触发一次

要创建三个超时,1、2和3秒-您可以使用:

setTimeout(function(){console.log('done')},1000);
setTimeout(function(){console.log('and done')},2000);
setTimeout(function(){console.log('finished')},3000);
注意,没有循环。每个setTimeout都会执行,当达到超时时,console.log语句就会运行


for循环在setInterval调用之前完全执行。

setInterval设置重复事件。setTimeout将只触发一次

要创建三个超时,1、2和3秒-您可以使用:

setTimeout(function(){console.log('done')},1000);
setTimeout(function(){console.log('and done')},2000);
setTimeout(function(){console.log('finished')},3000);
注意,没有循环。每个setTimeout都会执行,当达到超时时,console.log语句就会运行


在setInterval调用之前,for循环已完全执行。

请尝试此操作。我希望它能解决您的prblm问题

 function tellMeWhenDone () {

 for(var i=0; i<3; i++) {
      if (i === 0)
              var text = console.log('done');

      else if (i === 1)
              var text = console.log('and done');

      else if (i === 2)
              var text = console.log('finished');

      time(i);
}
}

 function time (i){
         setInterval(function(text){
    return text;
  }, 1000*(i+1))
}
 tellMeWhenDone();
函数tellMeWhenDone(){

对于(var i=0;i试试这个..我希望它能解决您的问题

 function tellMeWhenDone () {

 for(var i=0; i<3; i++) {
      if (i === 0)
              var text = console.log('done');

      else if (i === 1)
              var text = console.log('and done');

      else if (i === 2)
              var text = console.log('finished');

      time(i);
}
}

 function time (i){
         setInterval(function(text){
    return text;
  }, 1000*(i+1))
}
 tellMeWhenDone();
函数tellMeWhenDone(){

对于(var i=0;i删除else循环中的条件

函数tellMeWhenDone(){
对于(变量i=0;i<3;i++){
如果(i==0)
var text=console.log('done');
else如果(i==1)
var text=console.log('and done');
其他的
var text=console.log('finished');
时间(i);
}
}
功能时间(一){
设置间隔(函数(文本){
返回文本;
},1000*(i+1))
}

tellMeWhenDone();
删除else循环中的条件

函数tellMeWhenDone(){
对于(变量i=0;i<3;i++){
如果(i==0)
var text=console.log('done');
else如果(i==1)
var text=console.log('and done');
其他的
var text=console.log('finished');
时间(i);
}
}
功能时间(一){
设置间隔(函数(文本){
返回文本;
},1000*(i+1))
}

tellMeWhenDone();
您可以尝试回调:

函数日志(msg){
document.getElementById('logger').innerHTML+='
'+msg; } _complete()上的函数{ log('all done,when='+Date.now()); } 对于(变量i=1,max=5;max>=i;i++){ (功能(x){ setTimeout(函数(){ log('loop,x='+x+',when='+Date.now()); 如果(最大===x) 关于_complete(); },1000*x);//增加超时 })(i) ); }

运行代码…
您可以尝试回调:

函数日志(msg){
document.getElementById('logger').innerHTML+='
'+msg; } _complete()上的函数{ log('all done,when='+Date.now()); } 对于(变量i=1,max=5;max>=i;i++){ (功能(x){ setTimeout(函数(){ log('loop,x='+x+',when='+Date.now()); 如果(最大===x) 关于_complete(); },1000*x);//增加超时 })(i) ); }

运行代码…
…问题是什么?为什么是“else(i==2)”has condition??Else有一个condition,因为我对JS没有经验。我接受使用3个单独的setTimeout语句,间隔为1000、2000和3000ms,这将得到我想要的结果。我试图将此函数构造为一个练习,所以这就是为什么我可能不会以最直接的方式进行此操作。谢谢大家的支持你的帮助。为什么
var text=console.log('done');
?你希望文本有什么价值,你会用它做什么?为什么如果..否则当你可以做
['done','and done','finished'][i]
?问题是什么?为什么是“else”(i==2)has condition??Else有一个condition,因为我对JS没有经验。我接受使用3个单独的setTimeout语句,间隔为1000、2000和3000ms,这将得到我想要的结果。我试图将此函数构造为一个练习,所以这就是为什么我可能不会以最直接的方式进行此操作。谢谢大家的支持你的帮助。为什么
var text=console.log('done');
?你希望文本有什么价值,你会用它做什么?为什么如果..否则你可以做
['done','and done','finished'][i]