性能优化之throttle, debounce

匿名 (未验证) 提交于 2019-12-02 22:56:40

throttle节流的思想:

应用场景:

主要ӦӦ景中

  const throttle = (func, limit) => {       let lastFunc       let lastRan       return function() {         const context = this         const args = arguments         if (!lastRan) {           func.apply(context, args)           lastRan = Date.now()         } else {           clearTimeout(lastFunc)           lastFunc = setTimeout(function() {             if ((Date.now() - lastRan) >= limit) {               func.apply(context, args)               lastRan = Date.now()             }           }, limit-(Date.now() - lastRa))         }       }     }   

debounce:防抖的思想:

     const  debounce  = (fn,delay)=>{         let timer ;         delay = delay || 200         return function(){           let ctx = this           let args = arguments           if(timer) clearTimeout(timer)           timer = setTimeout(()=>{              fn.apply(ctx,args)           },delay)         }       }

应用场景:

主要Ӧ用在百度首页的输入联想词请求中。如果每输入一个字就向后台发送请求,会造成请求的极大浪费。因为最终我们想要的结果是最后输入的字段所匹配出来的结果。

以下是测试地址:

Demo地址:

https://jsbin.com/wopojojiti/2/edit?html,console,output

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!