Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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中setTimeout函数的执行混乱_Javascript - Fatal编程技术网

javascript中setTimeout函数的执行混乱

javascript中setTimeout函数的执行混乱,javascript,Javascript,for(设i=0;i

for(设i=0;i<5;i++){
setTimeout(函数(){
控制台日志(i);
},i*1000);

}
代码工作正常。这就是你的代码所做的。它说函数应该在
1*1000
mlliseconds内调用,然后在
2*1000
毫秒内调用,然后在
3*1000
毫秒内调用,依此类推

因此,当1秒过去后,将首次调用该函数。2秒后,将再次调用该函数。3秒后,将第三次调用该函数。等等


这就是为什么当程序运行时,您会发现函数以1秒的间隔被调用。

代码工作正常。这就是你的代码所做的。它说函数应该在
1*1000
mlliseconds内调用,然后在
2*1000
毫秒内调用,然后在
3*1000
毫秒内调用,依此类推

因此,当1秒过去后,将首次调用该函数。2秒后,将再次调用该函数。3秒后,将第三次调用该函数。等等


因此,当程序运行时,您会发现函数在1秒的时间间隔内被调用。

代码运行正常,javascript运行异步。这意味着
setTimeout()
不要阻塞代码。它只是执行setTimeout并继续循环。该代码与此处的代码几乎相同:

<script>

setTimeout(function(){
   console.log(0 + " seconds");
}, 0 * 1000)

setTimeout(function(){
   console.log(1 + " seconds");
},1 * 1000)

setTimeout(function(){
   console.log(2 + " seconds");
},2 * 1000)

setTimeout(function(){
   console.log(3 + " seconds");
},3 * 1000)

setTimeout(function(){
   console.log(4 + " seconds");
},4 * 1000)

</script>

setTimeout(函数(){
控制台日志(0+“秒”);
}, 0 * 1000)
setTimeout(函数(){
控制台日志(1+“秒”);
},1 * 1000)
setTimeout(函数(){
控制台日志(2+“秒”);
},2 * 1000)
setTimeout(函数(){
控制台日志(3+“秒”);
},3 * 1000)
setTimeout(函数(){
控制台日志(4+“秒”);
},4 * 1000)

代码运行良好,javascript异步运行。这意味着
setTimeout()
不要阻塞代码。它只是执行setTimeout并继续循环。该代码与此处的代码几乎相同:

<script>

setTimeout(function(){
   console.log(0 + " seconds");
}, 0 * 1000)

setTimeout(function(){
   console.log(1 + " seconds");
},1 * 1000)

setTimeout(function(){
   console.log(2 + " seconds");
},2 * 1000)

setTimeout(function(){
   console.log(3 + " seconds");
},3 * 1000)

setTimeout(function(){
   console.log(4 + " seconds");
},4 * 1000)

</script>

setTimeout(函数(){
控制台日志(0+“秒”);
}, 0 * 1000)
setTimeout(函数(){
控制台日志(1+“秒”);
},1 * 1000)
setTimeout(函数(){
控制台日志(2+“秒”);
},2 * 1000)
setTimeout(函数(){
控制台日志(3+“秒”);
},3 * 1000)
setTimeout(函数(){
控制台日志(4+“秒”);
},4 * 1000)

它正在增加。该代码导致从代码运行开始,在1000、2000、3000和4000毫秒内调用4个函数。函数调用之间的相对持续时间始终为~1000 ms
setTimeout()
不会停止循环的执行。它正在增加。该代码导致从代码运行开始,在1000、2000、3000和4000毫秒内调用4个函数。函数调用之间的相对持续时间总是~1000 ms
setTimeout()
不会停止循环的执行。“javascript异步运行”似乎太模糊了。JavaScript非常同步,但存在一个事件循环,一些操作会向该循环添加新任务<代码>设置超时就是其中之一。“javascript异步运行”似乎太模糊了。JavaScript非常同步,但存在一个事件循环,一些操作会向该循环添加新任务<代码>设置超时就是其中之一。