博客
关于我
JavaScript 性能优化-防抖和节流
阅读量:308 次
发布时间:2019-03-04

本文共 1078 字,大约阅读时间需要 3 分钟。

由来

在前端开发中有一部分的用户行为会频繁的触发事件执行,而对于DOM操作.资源加载等耗费性能的处理,

很可能导致页面的卡顿,甚至是浏览器的崩溃.函数节流和函数防抖就是为了解决类似需求应运而生的。

节流

  • 定义
  1. 函数节流就是预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。好像水滴攒到一定重量才会落下一样。
  • 场景
  1. 窗口调整(resize)
  2. 页面滚动(scoll)
  3. 抢购疯狂点击(mousedown)
  • 实现
function throttle(handler, wait){              // handler 预定义函数 wait等待毫秒数            var lastTime = 0;            return function(e){                var nowTime = new Date().getTime();                if(nowTime-lastTime > wait){                    handler.apply(this,arguments);                    lastTime = nowTime;                }else{                    //lastTime = nowTime;                }            }        }

防抖

  • 定义
  1. 函数防抖就是在函数需要频繁触发情况下,只要有足够的空闲时间,才执行一次。
    就好像是公交司机会等人都上车后才出站一样
  • 场景
  1. 实时搜索(keyup)
  2. 拖拽(mousemove)
  • 实现
function debounce(handler, delay){ 		    // handler 预定义函数 wait等待毫秒            var timer = null;            return function (){                var _self = this, args = arguments;                clearTimeout(timer);                timer = setTimeout(function(){                    handler.apply(_self, args);                },delay);            }        }

转载地址:http://xvaq.baihongyu.com/

你可能感兴趣的文章
理解PendingIntent
查看>>
Android SurfaceFlinger4 提交Buffer
查看>>
深入理解 ClientLifecycleManager 机制
查看>>
android基础知识回顾--ContentProvider简单用法
查看>>
压缩解压
查看>>
js try{}catch(){}finally{}语句
查看>>
PAT (Basic Level) Practice (中文)——1005 继续(3n+1)猜想 (25分)
查看>>
PAT (Basic Level) Practice (中文)——1011 A+B 和 C (15分)
查看>>
R3 PRO 3200G和r7 3700u 哪个好
查看>>
入手评测 联想小新Pro14和Air14Plus哪个好?区别对比
查看>>
macOS Big Sur系统中如何开启设置触控板三指拖拽功能?
查看>>
修复苹果Mac中的快速视频播放错误的方法
查看>>
Mac系统投屏到电视机的方法
查看>>
【Docker&ARM】ARM架构服务器上docker的安装
查看>>
php--自定义错误处理函数的使用方法
查看>>
php--异常处理主动抛出异常的使用方法
查看>>
php--class static
查看>>
php--匿名函数的使用
查看>>
php--json_decode
查看>>
php--class的工厂模式的示例
查看>>