
JavaScript 性能优化-防抖和节流
发布日期:2021-05-07 01:26:39
浏览次数:10
分类:技术文章
本文共 1078 字,大约阅读时间需要 3 分钟。
由来
在前端开发中有一部分的用户行为会频繁的触发事件执行,而对于DOM操作.资源加载等耗费性能的处理,
很可能导致页面的卡顿,甚至是浏览器的崩溃.函数节流和函数防抖就是为了解决类似需求应运而生的。
节流
- 定义
- 函数节流就是预定一个函数只有在大于等于执行周期时才执行,周期内调用不执行。好像水滴攒到一定重量才会落下一样。
- 场景
- 窗口调整(resize)
- 页面滚动(scoll)
- 抢购疯狂点击(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; } } }
防抖
- 定义
- 函数防抖就是在函数需要频繁触发情况下,只要有足够的空闲时间,才执行一次。 就好像是公交司机会等人都上车后才出站一样
- 场景
- 实时搜索(keyup)
- 拖拽(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); } }
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月12日 23时56分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue爬坑之 父组件向子组件异步传参 子组件中拿不到值的解决方法
2019-03-04
js基础复习5-原型链与js的成员查找机制
2019-03-04
js基础复习8-call方法简单使用以及javascript继承
2019-03-04
【游记】被吊打DAY2
2019-03-04
微信公众号开发之素材管理
2019-03-04
修改dynamic web module的版本大小
2019-03-04
IDEA 成功在tomcat上部署项目
2019-03-04
Node.js response 页面中文乱码
2019-03-04
gitee 修改个人域名 个人空间地址 URL
2019-03-04
C++11中bind的使用错误
2019-03-04
Android中CMake的使用之一初步总结
2019-03-04
futex同步机制分析之三内核实现
2019-03-04
多线程的伪共享
2019-03-04
flink分析使用之五工作图的生成和分发
2019-03-04
基于OpenCV的路面质量检测
2019-03-04
Spring Cloud系列_11 Feign负载均衡、请求传参
2019-03-04
leetcode 543. Diameter of Binary Tree
2019-03-04
VSLAM系列原创01讲 | 深入理解ORB关键点提取:原理+代码
2019-03-04
卡尔曼滤波器的特殊案例
2019-03-04