gpt4 book ai didi

javascript - 为数组中的每个间隔 ID 再次运行 set Interval

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

我目前正在数组中存储一堆 setInterval ID。

我最初如何设置间隔:

  intervalId = setInterval(bridgeCall, 10000);
interValArray.push(intervalId);

我目前有一个按钮,使我能够通过调用此函数来停止当前运行的所有间隔:

  function stopCampaign() {
if (interValArray.length > 0) {
for (i = 0; i < interValArray.length; i++) {
clearInterval(interValArray[i]);
console.log("Stopped");
}
error = "Stopped"
Error();
} else {
error = "Nothing Running"
Error();
}
}

这也是有效的,所以我尝试做相反的事情来重新启动它们,如下所示:

  function Campaign() {
if (interValArray.length > 0) {
for (i = 0; i < interValArray.length; i++) {
setInterval(interValArray[i],10000);
console.log("Start");
}
error = "Started"
Error();
} else {
error = "No Agents"
Error();
}
}

但不断收到错误消息:

timers.js:275
timer._repeat();
^

TypeError: timer._repeat is not a function
at wrapper [as _onTimeout] (timers.js:275:11)
at Timer.listOnTimeout (timers.js:92:15)

是否可以设置间隔/再次启动它们?

最佳答案

除了取消计时器之外,您不能使用计时器句柄执行任何操作。这一行:

setInterval(interValArray[i],10000);

尝试使用句柄“重新启动”间隔。内置计时器根本不支持这一点。您需要执行与最初启动它相同的操作才能再次启动它。

您还没有展示如何首先启动它们,因此我无法建议您如何重组以使其能够再次执行,但这里有一个综合示例:

// Initial setup
var timers = [];
for (var n = 0; n < 5; ++n) {
startTimer(function(val) {
document.getElementById("a" + val).innerHTML += ".";
}.bind(null, n), Math.random() * 1000);
}
function startTimer(f, interval) {
timers.push({
f: f,
interval: interval,
handle: setInterval(f, interval)
});
}

// Stop them after three seconds
setTimeout(function() {
console.log("Pausing...");
timers.forEach(function(timer) {
clearInterval(timer.handle);
});
}, 3000);

// Start them two seconds after that
setTimeout(function() {
console.log("Restarting...");
timers.forEach(function(timer) {
timer.handle = setInterval(timer.f, timer.interval);
});
}, 5000);

// Then stop them for good a couple of seconds later
setTimeout(function() {
console.log("Stopping");
timers.forEach(function(timer) {
clearInterval(timer.handle);
});
}, 7000);
<div id="a0">&nbsp;</div>
<div id="a1">&nbsp;</div>
<div id="a2">&nbsp;</div>
<div id="a3">&nbsp;</div>
<div id="a4">&nbsp;</div>

关于javascript - 为数组中的每个间隔 ID 再次运行 set Interval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35559319/

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