JavaScript怎么避免抖动,节流的应用要注意什么
导读:这篇文章主要给大家介绍“JavaScript怎么避免抖动,节流的应用要注意什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“JavaScript怎么避免抖动,节流的应用要...
这篇文章主要给大家介绍“JavaScript怎么避免抖动,节流的应用要注意什么”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考,希望这篇“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 = false if (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) button onclick="a()"> 测试防抖/button> button onclick="b()"> 测试节流一/button> button onclick="c()"> 测试节流二/button>
效果:
防抖。
节流,立即执行。
节流,延时执行。
注意事项
原理:闭包。每调用一次都会对应一个闭包。
不能够像下面这样写:
button onclick="debounce(say, 1000)()"> 测试防抖/button> button onclick="throttle(say, 1000)()"> 测试节流一/button> button onclick="throttle(say, 1000, false)()"> 测试节流二/button>
不然:
总结
以上就是关于“JavaScript怎么避免抖动,节流的应用要注意什么”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JavaScript怎么避免抖动,节流的应用要注意什么
本文地址: https://pptw.com/jishu/654372.html