节流(一段时间执行一次之后,就不执行第二次)
function throttle(fn, delay){let canUse = truereturn function(){if(canUse){fn.apply(this, arguments)canUse = falsesetTimeout(()=>canUse = true, delay)}}}const throttled = throttle(()=>console.log('hi'))throttled()throttled()
防抖(一段时间会等,然后带着一起做了)
function debounce(fn, delay){let timerId = nullreturn function(){const context = thisif(timerId){window.clearTimeout(timerId)}timerId = setTimeout(()=>{fn.apply(context, arguments)timerId = null},delay)}}const debounced = debounce(()=>console.log('hi'))debounced()debounced()
