我想在setInterval
中使用setTimeout
。第一次打印 out_k:0
。在间隔之后,它打印 out_k:1
, inside_k:0
?我不明白,我认为 inside_k
应该是 1。 ouside k
是1,太奇怪了。
var i = 0;
var timer = setInterval(function(){
if(i < arr.length){
var k=i;
//console.log("out_i:"+i);
console.log("out_k:"+k);
setTimeout(function(){
//console.log("inside_i:"+i);
console.log("inside_k:"+k);
},500);
i++;
}else {
clearInterval(timer);
}
},500);
最佳答案
这是代码执行期间的事件序列
1) 将 setInterval
的第一个实例排队,在 500 毫秒后执行
2) 500ms 后,它会将 setInterval
的第二个实例排队,并执行 setInterval
的第一个实例,打印out_k0
。当 k
的值仍为 0
时,它还会将 setTimeout
排队在 500 毫秒后执行。
3) 500ms 后,它会将 setInterval
的第三个实例排队,并执行 setInterval
的第二个实例并打印 out_k1
,因为 k 的值为现在为 1,但 setTimeout
的第一个实例也使用 inside_k0
等等。
关于javascript - setInterval中使用setTimeout时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43308002/