运用定时器防抖和节流
防抖:
防抖的作用主要解决的是在执行事件时,一段时间只让执行一次。
例如验证码刷新,点击之后会进入读秒短时间不会再让执行
var timeBoolean = true;//开关变量
function debounce() {
if(timeBoolean == true){
timeBoolean=false
doing()
setTimeout(function(){
timeBoolean = true
},2000)//每隔2000秒
}
}
//要执行函数
function doing(){
console.log(1)
}
总的可以理解为:定义一个开关 执行一次事件后,把开关关闭并设置一个setTimeout,走完延时才会把开关打开,下一次便可以执行事件,从而实现防抖。
节流:
节流的作用和防抖的作用类似,是一段时间内没有重复触发事件才会执行一次。
例如 登陆注册按钮这些含有复杂的请求和延迟的,如果在反应结束反复点肯定不行。
var time;
function debounce() {
clearTimeout(time)
time = setTimeout(function(){
doing()
},1000)
}
//要执行函数
function doing(){
console.log(1)
}
总的可以理解为:每次点击都会先清除上次遗留的延时器并重新打开一个新的延时器,当不点击的时候便会执行内部函数,从而实现节流