节流
function debounce(func, delay) {
let timer;
// 通过闭包使timer一直存在内存中
return function (...args) {
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(() => {
func.apply(this, args); //通过apply还原this指向事件
}, delay)
}
}
// 点击元素1秒后执行,如果1秒内重复点击会清空之前定时,重新生成定时器!
document.querySelector('.demo').addEventListener('click',debounce((e)=>{
// 需要执行的代码
console.log(e);
},1000),false);
防抖
function debounce(fn,wait){
var timer = null;
return function(){
if(timer !== null){
clearTimeout(timer);
}
timer = setTimeout(fn,wait);
}
}
function handle(){
console.log(Math.random());
}
window.addEventListener("resize",debounce(handle,1000));