防抖(Debounce)
防抖:当持续触发事件时,保证只执行最后一次事件处理函数。
简单来说:用一个性定时器来延缓运行。
代码如下:
举个转账的例子
<button id="btn">转账</button>
<script>
//获取元素
var btn=document.getElementById("btn")
//下面来写如何实现点击多次转账,只执行最后一次
function a(){
console.log(1)
}
//封装防抖让它有复用性
function debounce(fn){
var timer=null;
return function(){
clearTimerout(timer)
timer=setTimout(function(){
fn()
},500)
}
}
btn.onclick=debounce(a)
//这样点击转账按钮之后执行最后一次
</script>
节流(Throttle)
节流:当持续触发事件时,保证一定事件段内只调用一次事情处理函数
同样转账案例
<button id="btn">转账</button>
<script>
function fn(){
console.log("
我被节流了")
}
function throttle(fn){
//做个标记,关卡打卡
vat flag=true;
return function(){
if(!flag){
return
}
//关卡关闭
flag=false
setTimeout(function(){
//再把关卡打开
flag=true
fn()
},500)
}
btn.onclick=throttle(fn)}
//这样点击转账,有选择性地执行一部分转账事件!
</script>