gpt4 book ai didi

javascript - 暂停和恢复 setInterval

转载 作者:行者123 更新时间:2023-12-03 07:57:14 25 4
gpt4 key购买 nike

window.setInterval(function(){
//do stuff
}, milisec);

有没有办法随意停止这个间隔,并从它持续的地方恢复它?比如说,代码每 5 秒运行一次。我在第 2 秒中间停止它,当恢复时,我希望它运行剩余的 3 秒,然后每 5 秒继续运行。再次。

最佳答案

尝试这个:

1- 当你想要 pause计时器,计算剩余毫秒数并将其存储在某处,然后调用 clearInterval .

2- 当你想要 resume计时器,只需调用setTimeout将上一步中存储的剩余时间作为参数传递。

3- 在 setTimeout的回调,您应该调用 setInterval再次。

更新:这就是你想要的,javascript: pause setTimeout(); 的更改版本感谢@Felix Kling

    function IntervalTimer(callback, interval) {
var timerId, startTime, remaining = 0;
var state = 0; // 0 = idle, 1 = running, 2 = paused, 3= resumed

this.pause = function () {
if (state != 1) return;

remaining = interval - (new Date() - startTime);
window.clearInterval(timerId);
state = 2;
};

this.resume = function () {
if (state != 2) return;

state = 3;
window.setTimeout(this.timeoutCallback, remaining);
};

this.timeoutCallback = function () {
if (state != 3) return;

callback();

startTime = new Date();
timerId = window.setInterval(callback, interval);
state = 1;
};

startTime = new Date();
timerId = window.setInterval(callback, interval);
state = 1;
}

用法:
    var timer = new IntervalTimer(function () {
alert("Done!");
}, 5000);

window.setTimeout(function () {
timer.pause();
window.setTimeout(function () {
timer.resume();
}, 5000);
}, 2000);

关于javascript - 暂停和恢复 setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24724852/

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