gpt4 book ai didi

javascript - 如何在 for 循环中使用 setInterval 函数

转载 作者:IT王子 更新时间:2023-10-29 03:21:07 25 4
gpt4 key购买 nike

我正在尝试在给定可变项目列表的情况下运行多个计时器。代码看起来像这样:

var list = Array(...);

for(var x in list){
setInterval(function(){
list[x] += 10;
console.log(x + "=>" + list[x] + "\n");
}, 5 * 1000);
}

上述代码的问题在于,唯一更新的值是列表末尾的项目乘以列表中的项目数。

任何人都可以提供解决方案和一些解释,以便我知道为什么会这样吗?

最佳答案

var list = [1, 2, 3, 4, 5];

for (var i = 0, len = list.length; i < len; i += 1) {
(function(i) {
setInterval(function() {
list[i] += 10;
console.log(i + "=>" + list[i] + "\n");
}, 5000)
})(i);
}

这是工作代码:

var list = [1, 2, 3, 4, 5];

for (var i = 0, len = list.length; i < len; i += 1) {
(function(i) {
setInterval(function() {
list[i] += 10;
console.log(i + "=>" + list[i] + "\n");
}, 5000)
})(i);
}

此处索引i 存储在匿名函数中,因此它不会被连续循环覆盖。代码中的 setInterval 函数仅保留对 i 的最后一个值的引用。

关于javascript - 如何在 for 循环中使用 setInterval 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com