
js节流与防抖的代码实现与应用场景简述
发布日期:2021-05-11 00:28:53
浏览次数:14
分类:精选文章
本文共 1135 字,大约阅读时间需要 3 分钟。
节流
一定时间内只执行一次相关代码
适用场景: 图片懒加载 监听滚动条 如鼠标移动事件中onmousemove、滚动条事件等 ,如若事件触发执行的相关代码中有关于DOM节点的相关操作 又或者 ajax 请求接口,会造成计算机的性能的浪费,这种现象是我们不希望见到的 特点:监听timer这个变量,如果timer为null的时候 才会执行callbackfunction throttle(callback, wait) { var timer = null return function () { if (!timer) { timer = setTimeout(function () { callback() timer = null }, wait) } }}function foo() { console.log(Math.ceil(Math.random() * 10))}window.addEventListener("mousemove", throttle(foo, 2000))
防抖
在一系列频繁的操作下 只取最后一次(个人理解)
应用场景: 验证码六位数 在输入最后一位后 自动提交表单 在调整屏幕大小时 有些浏览器 或者页面可能会等到调整完成 才会执行callback 避免多次无意义的排版渲染function throttle(callback, wait) { var timer = null return function () { if (timer) { clearInterval(timer) } timer = setTimeout(function () { callback() timer = null }, wait) }}function foo() { console.log(Math.ceil(Math.random() * 10))}window.addEventListener("mousemove", throttle(foo, 2000))
总结:
防抖节流的核心都是setTimeout ,都是为了降低callback的执行频率 节省计算机资源 优化性能 提高用户体验发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月11日 02时01分18秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
数字印钞界迎来重磅精英机构,普通人还有翻身机会吗? | 加密货币与阶层穿越...
2021-05-10
张一鸣:创业7年,我经历的5件事
2021-05-10
SQL基础语法
2021-05-10
Python3 日期和时间
2021-05-10
JavaScript实现表格排序
2021-05-10
vue散碎知识点学习
2021-05-10
git拉取远程指定分支代码
2021-05-10
C语言--C语言总结大纲
2021-05-10
JavaFX官方文档
2021-05-10
ORA-12154: TNS: 无法解析指定的连接标识符
2021-05-10
In App Purchase Verification using PHP
2021-05-10
shell编程===》进程锁
2021-05-10
Split返回数组元素含有空字符串移除
2021-05-10
解决VS中C语言运行scanf错误
2021-05-10
idea上的程序报错-> 错误: 找不到或无法加载主类
2021-05-10
java刷题--49字母异位词分组
2021-05-10
《web安全入门》(四)前端开发基础Javascript
2021-05-10
call_user_func函数和call_user_func_array函数
2021-05-10
配置php.ini文件,关闭错误提示,打开错误日志,设置错误日志路径
2021-05-10