gpt4 book ai didi

javascript - 如果再次调用函数,则取消超时/计时器 --- debounce 函数

转载 作者:行者123 更新时间:2023-12-02 18:48:04 25 4
gpt4 key购买 nike

我想创建一个启动超时的函数,但如果再次调用该函数,在计时器结束之前,取消原始调用并再次启动计时器。

我想我可以做到:

function setTimer() {
setTimeout(() => {
// do something
}, 3000)
}

...但这不起作用,每次我运行 setTimer() 时,它都不会取消原始调用。

有人能指出我正确的方向吗?

最佳答案

setTimeout 返回一个 ID,您可以使用 clearTimeout() 来清除超时。因此,您可以在函数开始时清除现有的超时。

例如,如果您继续单击,它将继续重新启动 - 如果您不单击,它将在 2 秒内完成:

let timerID;

function setTimer() {
console.log("starting/restarting timer")
clearTimeout(timerID)
timerID = setTimeout(() => {
console.log("finished")
}, 2000)
}
<p onclick="setTimer()">click to start</p>

关于javascript - 如果再次调用函数,则取消超时/计时器 --- debounce 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52377081/

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