gpt4 book ai didi

javascript - 是否可以在Javascript中的setTimeout()方法中使 "value"自增?

转载 作者:行者123 更新时间:2023-11-28 07:54:39 27 4
gpt4 key购买 nike

是否可以在Javascript中的setTimeout()方法中使“值”自增?

我的代码如下所示。我在 init() 方法中有两个 for 循环,在内部循环中我有 setTimeout 方法,使函数“var myfun = function testFunc(year, value)”每 1 秒调用一次。

但我还有一个名为“value”的属性

1.我希望“值(value)”每次都增加,

2.或者更改“value”,然后在下次调用此函数“var myfun = function testFunc(year, value)”时使用新的“value”;

但现在我发现在函数“var myfun = function testFunc(year, value)”中我可以从数据集[state]正确获取年份,但“值”始终相同。

有什么办法可以让“值”每次都增加或者改变吗?非常感谢任何帮助或答案。

...
init();

function init(){
...
for (var state in dataset) {
var i=0;
var value = 18;
for (var year in dataset[state]) {
i++;
setTimeout( "myfun(" + year + "," + value + ")", i*1000);

}
}
}

var myfun = function testFunc(year, value){

// I want "value" to be increased every time,
// or make change to "value", then use the new "value"
// in the next time invoke this function;
value++;
console.log("year:" + year + ",value:"+value);
}

最佳答案

我认为如果您将 setTimeout 与函数回调一起使用(无论如何您都应该这样做,因为不建议使用字符串表示法),这是可能的:

function init() {
// ...
for (var state in dataset) {
var i = 0;
var value = 18;
for (var year in dataset[state]) {
i++;
setTimeout(function() {
myfun(year, ++value);
}, i * 1000);
}
}
}

var myfun = function testFunc(year, value) {
console.log("year:" + year + ",value:" + value);
}

关于javascript - 是否可以在Javascript中的setTimeout()方法中使 "value"自增?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26257871/

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