防抖原理:延迟一个高频触发事件n秒。如果n秒内再次触发事件,则重新计算n秒,避免频繁触发事件/**防抖*防抖的原理是:将一个高频触发的事件延迟n秒。如果n秒内事件再次触发,则重新计算n秒,防止事件频繁触发*/functiondebounce(fn,delay){lettimerreturnfunction(){if(timer){clearTimeout(timer)}timer=setTimeout(()=>{fn.apply(this,arguments)},delay)}}functionsayHello(){console.log('Hello')//case:在输入框输入关键字搜索文档。getElementById('search').addEventListener('keyup',debounce(sayHello,500))节流原则:让一个高频触发事件在n秒内只触发一次/**Throttling*节流的原则是:让一个高频率的触发事件在n秒内只触发一次-频率触发事件在n秒内只触发一次*/functionthrottle(fn,dalay){letcanRun=truereturnfunction(){if(!canRun)returncanRun=falsesetTimeout(()=>{fn.apply(this,arguments)canRun=true},dalay)}}functionsayHi(){console.log('Hi')}//案例:在输入框输入关键字Searchdocument.getElementById('search').addEventListener('keyup',风门(sayHi,1000))总结防抖和节流都解决了高频触发的问题。防抖和节流的原理不同。大多数场景,两个用户可以任意选择,只有特定的场景会更好。一般来说,使用哪种方法取决于您的业务需求。防抖和节流一定不止一种。这只是最常见的一种。
