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