Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 for循环中的setTimeOut出现意外行为_Javascript - Fatal编程技术网

Javascript for循环中的setTimeOut出现意外行为

Javascript for循环中的setTimeOut出现意外行为,javascript,Javascript,我正试图在特定的时间间隔将数字记录到控制台。但是,它会等待设置的时间间隔,然后正常注销所有内容 我尝试了两种不同的方法来创建一个闭包,这两种方法都有效。但是不要对延迟的console.log执行任何操作 函数timeOutLoop(x){ 对于(var i=0;i,由于循环基本上是立即执行的,所以第一个循环的时间相差不大,因为时间以毫秒为单位,而对于第二个循环,它们都将在1秒后执行 结合使用这两种方法,您可以实现: 函数timeOutLoop(x){ 对于(var i=0;iSetTimeo

我正试图在特定的时间间隔将数字记录到控制台。但是,它会等待设置的时间间隔,然后正常注销所有内容

我尝试了两种不同的方法来创建一个闭包,这两种方法都有效。但是不要对延迟的console.log执行任何操作

函数timeOutLoop(x){

对于(var i=0;i,由于循环基本上是立即执行的,所以第一个循环的时间相差不大,因为时间以毫秒为单位,而对于第二个循环,它们都将在1秒后执行

结合使用这两种方法,您可以实现:

函数timeOutLoop(x){

对于(var i=0;iSetTimeout,设置超时同时开始,因此,如果您想在一次又一次超时后开始超时,可以创建一个递归函数:

function timeOutLoop(x, i=0){
   if(i<=x){
      console.log(i);
      i++;
      setTimeout(function(){timeOutLoop(x, i)},1000);
   }
}
timeOutLoop(33)
函数timeOutLoop(x,i=0){
如果(i
函数timeOutLoop(x){

对于(假设i=0;i您为每个计时器提供完全相同的等待时间。(两个不同的等待时间,但仍然如此。)需要说明的是:外部
for
循环基本上会立即结束;设置每个计时器需要几微秒。然后它们都会等待1秒或5秒,并同时熄灭。这就像在同一时间点燃33个鞭炮的保险丝一样。谢谢。我该如何继续?你想要正式答案吗或者我应该自己回答吗?你想做什么?一种可能是将你的计时器常数(1000或5000)乘以迭代值,给每个计时器自己的延迟。