js関数スロットル、振れ防止
5557 ワード
js関数スロットル、振れ防止
新しいindex.jsは次のコードをindexにコピーする.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
}