setTimeout未按预期工作
setTimeout not working as expected
本文关键字:工作 setTimeout 更新时间:2023-09-26
我正在用Javascript编写for循环。想要的目标是打印出0、1、2,中间间隔3秒。
for (var i=0; i<3; i++) {
console.log(i);
}
这会按预期打印所有内容,不会停顿。但是当我添加setTimeout:时
for (var i=0; i<3; i++) {
setTimeout(function() {console.log{i},3000*i}
}
结果是,它以3秒的间隙打印出3
、3
、3
。暂停有效,但看起来它在打印正确的数字之前就完成了循环。
在运行setTimeout
调用之前,循环已经完成,这是完全正确的。由于所有超时函数都引用i
,所以它们都将打印出3
。解决此问题的方法是在闭包中捕获i
的值。
for (var i = 0; i < 3; i++) {
(function(index) {
setTimeout(function() {
console.log(index);
}, 3000 * index);
})(i); // Instantly call the function and pass the value of i
}
相关文章:
- 刷新后,setTimeout将工作或不工作
- 使setInterval和setTimeout工作时出现问题
- 为什么我需要在setTimeout中有匿名函数才能使此代码工作
- window.open没有't在设置setTimeout内工作-弹出窗口被阻止
- 如何使setTimeout脚本在html表单中正常工作
- SetTimeout延迟未按jquery幻灯片中的预期工作
- setTimeout()在JavaScript中是如何工作的
- Javascript-为什么不是't此setTimeout函数正在工作
- setInterval工作setTimeout不工作;t
- setTimeout未按要求工作
- 为什么javascript setTimeout()不能在循环中工作
- setTimeout方法的工作原理很奇怪
- 变量在Javascript中是如何工作的?可以在setTimeout期间更改变量值
- Javascript:addEventListener 仅在 setTimeout 中工作
- 如何删除 settimeOut 的队列工作
- 在工作线程中使用 setTimeOut
- 无法在 javascript 中获取 setTimeout 以正常工作
- 在循环中调用 setTimeout 未按预期工作
- setTimeout() 如何在 JS 上工作
- JavaScript代码首先使用setTimeout工作,但随后崩溃或不起作用