42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
// 通过防抖,可以避免在用户快速连续地进行操作时(例如连续快速点击按钮),服务器或浏览器因为接收到过多无意义的重复请求而造成的性能瓶颈,从而提高页面性能和用户体验
|
|
/**
|
|
* @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)
|
|
})
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @description 首次执行版本
|
|
* @param { Function } - 需要添加防抖功能的函数
|
|
* @delay { number } - 防抖延迟的时间
|
|
*/
|
|
export default function deBounce(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)
|
|
}
|
|
}
|