gpt4 book ai didi

javascript - 如何确保一次只运行一个递归 setTimeout 链?

转载 作者:行者123 更新时间:2023-11-30 16:32:09 26 4
gpt4 key购买 nike

我正在制作一个供个人使用的 chrome 扩展,它将递归调用 setTimeout。我想确保此扩展在任何情况下都不会意外产生多个 setTimeout 链。

我已经做到了,当我点击浏览器操作时,它会调用 clearTimeout。但是,我担心当我重新加载扩展时旧的超时链会继续吗?可能还有其他我没有想到的场景。是否有一种行之有效的方法来防止意外创建多个超时链?

看起来没有办法枚举事件的 javascript 计时器:Viewing all the timouts/intervals in javascript?

最佳答案

我以前解决过类似的案例:

var timer;
function foo(){
if(!timer)
timer = setTimeout(function (){
//should print once every second only
console.log(new Date());
timer = null;
foo();
}, 1000)
}

foo();
foo();

由于 javascript 在处理下一个事件之前运行同步代码直到完成,这是安全的。

关于javascript - 如何确保一次只运行一个递归 setTimeout 链?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33176554/

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