黑马程序员技术交流社区

标题: 【成都校区】函数的防抖和节流 [打印本页]

作者: 小刀葛小伦    时间: 2019-8-29 13:48
标题: 【成都校区】函数的防抖和节流
函数的防抖和节流的是什么为什么要掌握防抖和节流函数节流(throttle)与函数防抖(debounce)都是可以限制函数的执行频次,根据不同的场景来对执行频率进行限制,避免了函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象。
函数的防抖和节流应用实例与实现
[JavaScript] 纯文本查看 复制代码
   var timer = null
   function debounce(fn,time){
        //触发频率小于500ms是则清除上次未执行的
        clearTimeout(time)
        setTimeout(function(){
            console.log('====执行=====')
            fn()
        },time)
   }
   //监听搜索input change事件
   element.addEventListener("input", function(event) {
    debounce(searchFunc,500)
   })
   //搜索
   searchFunc(){
       console.log('====serch=====')
   }

节流的应用
1.canvas画笔功能
2.页面元素的拖拽
实例代码1:
[JavaScript] 纯文本查看 复制代码
var startTime = 0
function throttle(fn,time){
    let nowTime = (new Date()).valueOf()
    if(nowTime-startTime > time){
        fn()
        startTime = nowTime
    }
}

document.addEventListener("mousemove",function(){
  //每隔1秒执行一次drag
   throttle(drag(),1000)
});
function drag(){
   console.log('=====执行=====')
}

总结
在页面负载比较大的情况下,如何减少对浏览器内存的消耗是前端优化的必须要考虑到的。而防抖与节流的概念可以让我们极大的节约对浏览器内存的消耗,所以掌握防抖与节流是前端必备技能之一。







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2