feat: 添加首次会执行的防抖

This commit is contained in:
= 2024-05-04 01:01:47 +08:00
parent 47d42c3482
commit 78fa340090
2 changed files with 37 additions and 2 deletions

View File

@ -9,7 +9,6 @@
<div> <div>
<input type="text" id="input"> <input type="text" id="input">
<p></p> <p></p>
<input type="button" id="button">
</div> </div>
<script> <script>
function deBounce(fun, delay){ function deBounce(fun, delay){
@ -23,11 +22,30 @@
},delay) },delay)
} }
} }
function deBounce2(fun, delay){
var timer = 0
var flag = true // 是否允许执行
return function(){
var args = arguments
var context = this
if(flag) {
fun.apply(context, args)
flag = false
return
}
clearTimeout(timer)
timer = setTimeout(function(){
fun.apply(context, args)
flag = true
},delay)
}
}
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
let input = document.querySelector("input") let input = document.querySelector("input")
let p = document.querySelector("p") let p = document.querySelector("p")
input.addEventListener("input", deBounce(function(){ input.addEventListener("input", deBounce2(function(){
p.innerHTML = this.value p.innerHTML = this.value
} }
, 250)) , 250))

View File

@ -15,3 +15,20 @@ export default function deBounce(fun, delay) {
}) })
} }
} }
/**
* @description 首次执行版本
* @param { Function } - 需要添加防抖功能的函数
* @delay { number } - 防抖延迟的时间
*/
export default function deBounce(fun, delay) {
var timer = 0
return function() {
var args = arguments
var context = this
if(timer) clearTimeout(timer)
timer = setTimeout(function(){
fun.apply(context, args)
})
}
}