【发布时间】:2019-02-14 20:04:17
【问题描述】:
我正在尝试以特定的时间间隔将数字记录到控制台。但是,发生的情况是它等待设置的时间间隔,然后正常记录所有内容。
我尝试了两种不同的方法来创建闭包。但是对于延迟的 console.log 什么也不做。
function timeOutLoop(x){
for(var i = 0; i<=x; i++){
(function(n){
setTimeout(function(){console.log(n)},5000)
})(i)
setTimeout(function(num){
return function(){
console.log(num)
}
}(i),1000)
}
}
timeOutLoop(33)
我的印象是,每个 setTimeout 都会使用闭包提供的上下文进入事件队列。什么给了?
【问题讨论】:
-
您为每个计时器提供完全相同的等待时间。 (以及 2 个不同的等待时间,但仍然如此。)
-
要明确:外部
for循环将基本上立即结束;设置每个计时器需要几微秒。然后,它们将全部等待 1 或 5 秒,并同时熄灭。这就像同时点燃了 33 个鞭炮的导火索。 -
谢谢。我应该如何进行?你想要官方的答案还是我自己来回答?
-
那么你想做什么?一种可能性是将您的计时器常数(1000 或 5000)乘以迭代值,为每个计时器提供自己的延迟。
标签: javascript