gpt4 book ai didi

多个线程上的 JavaScript setInterval

转载 作者:行者123 更新时间:2023-11-28 12:39:55 25 4
gpt4 key购买 nike

我有一个通用字典,如下所示:data 保存一个字典(键,值)对:

for (var key in data) {
var interval = setInterval(function () {
getProgress(key, data[key], interval) }, 2500); // get percent progress every sec.
}
}

需要为每个数据[key]项执行的getProcess函数

    function getProgress(machineId, operationId, interval) {
alert(machineId);
$.post("@Url.Action("Status","Packages")", {
machineId: machineId,
operationId: operationId
}, function (data) {
if (data) {
//blah blah...
} else {
clearInterval(interval); }
}
}
});
}

出于某种原因,只有最后一个 machineId 获得了 setInterval。我需要分别为每个数据项设置 Interval。

最佳答案

经典的 for 循环作用域问题。 for 循环的每次迭代都在相同的作用域中执行,因此在 for 循环内创建的每个函数都访问相同的 key 变量。

简单的解决方案是为每次迭代创建一个私有(private)范围。

for ( var key in data ) {
(function (key) {
var interval = setInterval(function () {
// get percent progress every sec.
getProgress(key, data[key], interval)
}, 2500);
})(key);
}

关于多个线程上的 JavaScript setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273998/

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