js中如果我用一个按钮去触发定时器,那么多次点击这个定时器会越来越快,这是为何?
并不是越来越快, 而是越来越多;
$('button:first').click(function(){
// 记录ID
var timerId = setInterval(function(){
console.log('Do something...');
}, /*3s间隔*/3000);
// 猜测可能是少了这两步骤, 你也可以用别的方法记录timerId
// 清空原来的定时器
// 记录新的定时器
clearInterval($(this).attr('data-timer-id'));
$(this).attr('data-timer-id', timerId);
});
定时器是异步的,不会按照你预想的顺序来执行,因此你需要创建一个类来管理定时器的顺序,参考我写的这篇文章就是如此做的:
https://segmentfault.com/a/11...
那你的代码一定是在按钮点击事件触发定时器之后没有把对应的函数绑定去掉,导致你每点击一下,就多触发一个定时器,然后给你的感觉就是越来越快,其实是定时器数量越来越多了,这是你自己代码逻辑不严谨,没错,它属于BUG!
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
因为点一次开一个定时器吧 就看起来越来越快