JavaScript原生实现的节流和防抖
2021-06-08 18:03
标签:直接 java 过程 asc 回调函数 javascrip art 回调 code 1.防抖 防抖:在高频触发下,在n秒内只触发一次(非严格)。如果n秒内再次触发,则重新计时 2.节流 节流:在高频触发下,在n秒内只触发一次(严格)。如果多次触发,则直接忽略,等待第一个触发完毕。 JavaScript原生实现的节流和防抖 标签:直接 java 过程 asc 回调函数 javascrip art 回调 code 原文地址:https://www.cnblogs.com/xiaoxu1024/p/14522819.html//实现debounce
function debounce(fn){
let timer = null //创建一个命名存放定时器返回值
return function (){
clearTimeout(timer) //输入前先杀掉前一个定时
timer = setTimeout(() => { //创建一个新的
fn.apply(this, arguments) //时间到执行fn回调函数
}, 500)
}
}
//实现throttle
function throttle(fn){
let flag = true //通过闭包保存一个标记
return function (){
if(!flag) return //正在定时执行,直接返回
flag = false //没有定时在执行,添加定时执行
setTimeout(() => { //定时过程中flag一直为false,下一次触发直接被返回
fn.apply(this, arguments)
flag = true
},2000)
}
}
上一篇:python---三元运算符
下一篇:SCSS循环遍历数组
文章标题:JavaScript原生实现的节流和防抖
文章链接:http://soscw.com/index.php/essay/92321.html