js函数节流、防抖
2021-04-13 本文已影响0人
pinbolei
js 函数节流、防抖
新建index.js将下面代码复制到index.js中
/**
* 函数防抖 (只执行最后一次点击)
* @param fn
* @param delay
* @returns {Function}
* @constructor
*/
const debounce = (fn, t) => {
let delay = t || 300
let timer
return function () {
let args = arguments
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
fn.apply(this, args) // this 指向vue
}, delay)
}
}
/**
* 函数节流
* @param fn
* @param interval
* @returns {Function}
* @constructor
*/
const Throttle = (fn, t) => {
let last
let timer
let interval = t || 500
return function () {
let args = arguments
let now = +new Date()
if (last && now - last < interval) {
clearTimeout(timer)
timer = setTimeout(() => {
last = now
fn.apply(this, args)
}, interval)
} else {
last = now
fn.apply(this, args)
}
}
}
export default {
debounce,
Throttle
}