防抖:当事件被触发时,设定一个周期延迟执行动作,若期间又被触发,则重新设定周期,直到周期结束,执行动作
实现 通过鼠标移动事件、改变num的值
let num = 0
let content = document.getElementById('box')
function count() {
content.innerHTML = num++
}
//过两秒后执行 (延时执行)
// function debounce(func, delay) {
// let timeOut = null
// return function () {
// if (timeOut) clearTimeout(timeOut)
// timeOut = setTimeout(function () {
// func.apply(this, arguments)
// }, delay)
// }
// }
// 先执行 过2秒 (立即执行)
function debounce(func,delay){
let timeOut=null
return function () {
if(timeOut) clearTimeout(timeOut)
let flag=!timeOut //用来判断是否有定时器的
timeOut=setTimeout(()=>{ //增加一个定时器
timeOut=null //清空当前定时器句柄
},delay)
//判断定时为空时 执行 所以第一次运行时执行
if(flag){
func.apply(this,arguments)
}
}
}
content.onmousemove = debounce(count, 1000)