JavaScript 前端 防抖 节流
2022/1/19 20:52:35
本文主要是介绍JavaScript 前端 防抖 节流,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
=> 应用场景 <=
在开发项目时,有时候会频繁触发一个事件:
① 在浏览器中:
window.onscroll
window.onresize
window.onmousemove
<btn>抢购按钮</btn>
...
频繁触发一些事件,就可能导致性问题。
② 向服务器发送ajax请求,频繁发送,也会给服务器造成压力。
那么如何解决呢?
===>防抖 节流
目的:限制事件的频繁触发、接口的频繁请求、减轻服务器压力。
1、节流
原理:在函数需要频繁触发时,触发一次后,在规定的时间,不会触发第二次,只有大于设定的时间,才会触发第二次。
<button id="btn">函数的节流</button> <script> //节流时间为1000ms document.getElementById("btn").onclick = throttleFn(handleClick,1000); // 通过此函数达到,限制触发事件两次间隔时间的效果。 function throttleFn(callback,delay){ let start = 0; return function () { let current = Date.now(); if(current - start > delay){ callback(); start = current; } } } // 将需要做出响应操作的函数,作为节流函数的参数一。 function handleClick(){ console.log("抢购按钮触发~") } </script>
2、防抖
原理:在函数需要频繁触发时,在规定的时间内,只让最后一次生效,前面的都不生效。适合多次事件给出一次响应。
<button id="btn">立即抢购</button> <script> // 1000ms内,让你前面疯狂触发的最后一次生效。 document.getElementById("btn").onclick = debounceFn(handleClick,1000); // 在防抖函数中有一个定时器,如果上次点击还没过预定时间,那么上次的定时器会直接清空,重新开启。 function debounceFn(callback,delay){ return function () { if(callback.timeoutId){ clearTimeout(callback.timeoutId) } callback.timeoutId = setTimeout(()=>{ callback() },delay) } } // 作为防抖处理函数的参数一 function handleClick(){ console.log("点击触发~") } </script>
这篇关于JavaScript 前端 防抖 节流的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南