gpt4 book ai didi

javascript - 定时器到期后重置 setTimeout

转载 作者:行者123 更新时间:2023-11-30 12:24:57 32 4
gpt4 key购买 nike

我有一个持续的 while 循环。在while循环中,有一个setTimeout()。我想在定时器到期后重置定时器。换句话说,当定时器到期时,它应该做一些指定的 Action ,然后重新启动定时器。

例如,在下面的代码中,%%--Hi--%% 应该在 5 秒内只打印一次。然而,5秒后,%%--Hi--%%被连续打印出来。我尝试了 clearTimeout,但看起来 clearTimeout 只能在计时器到期之前停止计时器。

while(){
var timeoutHandle = setTimeout(function() {
console.log("%%--Hi--%%");
clearTimeout(timeoutHandle);
},
5000); //5 sec
}

请帮忙!谢谢!

最佳答案

让您失望的不是超时,而是无限的 while 循环。您实际上每秒创建了数千个超时。将超时移到无限循环之外应该可以解决您的问题。

function timedAction() {
// your timed actions to be invoked every 5 seconds

setTimeout(timedAction, 5000); // start the next timeout
}

setTimeout(timedAction, 5000); // start the first timeout

while() {
// your continuously executing actions
}

超时后无需清除。

或者你也可以使用setInterval,简化你的代码如下:

function timedAction() {
// your timed actions to be invoked every 5 seconds
}

setInterval(timedAction, 5000); // start the interval

while() {
// your continuously executing actions
}

关于javascript - 定时器到期后重置 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738023/

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