JavaScript防抖与节流的实现与注意事项
目录
- 概念
- 实现
- 测试
- 注意事项
- 总结
概念 防抖:点击N次提交按钮,只有最后一次会发出请求。减少无效请求的次数。
节流:每点击一次按钮,都会失效一段时间。降低触发的频率。
实现
/*防抖时限内,只有最后一次调用会执行*/function debounce(func, interval = 0) { let timer; return function () {if (timer) {clearTimeout(timer); }timer = setTimeout(() => {func()}, interval) }}/*节流执行之后会失效一段时间*/function throttle(fn, interval=0, immediate=true) { let valid = true return function () {if (!valid) {return}valid = falseif (immediate) {fn()setTimeout(() => {valid = true; }, interval)} else {setTimeout(() => {fn()valid = true; }, interval)} }}
测试
function say() { console.log(1)}var a = debounce(say, 1000)var b = throttle(say, 1000)var c = throttle(say, 1000, false)
效果:
防抖。
文章图片
节流,立即执行。
文章图片
节流,延时执行。
文章图片
注意事项 原理:闭包。每调用一次都会对应一个闭包。
不能够像下面这样写:
不然:
文章图片
总结 【JavaScript防抖与节流的实现与注意事项】到此这篇关于JavaScript防抖与节流的实现与注意事项的文章就介绍到这了,更多相关JS防抖与节流内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- JavaScript深入理解节流与防抖
- 信通院牵头数列科技参与主编的《信息系统稳定性保障能力建设指南》正式发布
- C语言与C++编程|C++ 并发编程(C++11 到 C++17 )
- 运维|CPU与内存的那些事(2)
- 《云计算架构技术与实践》连载(2)(1.2|《云计算架构技术与实践》连载(2):1.2 云计算的发展趋势)
- JavaScript实现气球打字的小游戏
- Java并发编程数据库与缓存数据一致性方案解析
- Web 性能权威指南
- Spring中Bean的加载与SpringBoot的初始化流程详解
- 大咖说·图书分享|数字化转型架构(方法论与云原生实践)