我正在制作一个供个人使用的 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/