节流阀
防止轮播图按钮连续点击造成播放过快
节流阀的目的:当上一个函数内容执行完毕,再去执行下一个函数动画,让事件无法连续触发.
核心实现思路:
利用回调函数,添加一个变量来控制,锁住函数和解锁函数.
设置一个变量 var flag=true;
if(flag){flag =false ; do sth}
再利用回调函数 动画执行完毕,flag = true;
案例–带有动画的返回顶部
function animate(obj, target) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
//把步长值改为整数,不要出现小数,除法出现小数会是值不对
//因为是垂直滚动,所以把.offsetLeft都换成window.pageYOffset()
var temp = (target - window.pageYOffset)/ 10;
temp = temp > 0 ? Math.ceil(temp) : Math.floor(temp);
if (window.pageYOffset == target) {
clearInterval(obj.timer);
}
//(目标值-元素现在所在位置)/10 作为每次移动的距离
window.scroll(0,window.pageYOffset + temp);
}, 30)
}