防抖
目的:对于短时间内连续触发的事件,让某个时间期限内,事件处理函数只执行一次。
思路:在第一次触发事件时,不立即执行函数,给出一个期限值,在期限值内没有触发事件,则执行函数;如果在期限值内触发了事件,则重新计时。
实现:使用setTimeout 函数
/** 借助闭包* func 执行的函数* delay 期限值*/function debounce(func,delay){let timer = nullreturn function() {if(timer){clearTimeout(timer)}timer = setTimeout(func,delay)}}
节流
目的:如果短时间内大量触发同一事件,那么在函数执行一次之后,该函数在指定的时间期限内不再工作,直至过了这段时间才重新生效。
思路:触发函数事件后,立即执行函数,然后在某个时间段内暂时不执行函数,过了这段时间后再重新激活。
实现:使用setTimeout 函数
function throttle(func,delay){let timer = nullreturn function() {if(timer){return false}timer = setTimeout(() => {func()}, delay)}}
