【发布时间】:2015-02-11 17:06:11
【问题描述】:
所以我知道 setTimeout() 函数可以在一定时间后触发传入的函数,但在循环中似乎表现不同。例如:
for (var i = 0; i < 5; i++) {
setTimeout(console.log(i + ', time is: ' + new Date()), 1000);
}
console.log() 似乎同时打印出所有数字。我不理解为什么。你们中的一些人能解释一下为什么setTimeout() 在这个循环中不起作用吗?
【问题讨论】:
-
setTimeout 不是暂停,它从现在开始设置超时并继续。这样做的方法是一个递归函数,它记录自己并使用 settimeout 再次调用自己,向传递的参数添加一个(并记住在满足条件时停止递归。
-
你目前写这个的方式相当于做
console.log(i + ', time is: ' + new Date()); setTimeout(undefined, 1000);
标签: javascript settimeout