配置节流函数
debounce 函数
function debonce (method) {
clearTimeout(method.timer)
method.timer = setTimeout( function () {
method ()
}, 50)
}
debonce 函数保证函数执行频率最多 50ms执行一次 当时间间隔小于 50ms时 清除这个定时器 函数定时器重新计时
throttle 函数保证当函数执行频率超过50ms一次时 只要之后的一次调用throttle函数 当函数调用时间间隙大于50ms 调用method函数
var oldTime = new Date().getTime()
function throttle (method) {
var newTime = new Date().getTime()
if (newTime - oldTime >= 50 ) {
newTime = new Date().getTime()
method()
}
}
/**
*配置节流函数
*@param {[function]} fn [要执行的函数]
*@param {[Number]} delay [延迟执行的毫秒数]
*@param {[Number]} mustRun [至少多久执行一次]
*@return {[function]} [节流函数]
*/
exports.throttle = (fn, wait, mustRun) => {
let timeout
let startTime = new Date()
return function () {
let context = this
let args = arguments
let curTime = new Date()
clearTimeout(timeout)
if (curTime - startTime >= mustRun) {
// 如果到达触发时间 触发handler
fn.apply(context, args)
startTime = curTime
} else {
// 如果没到达触发 时间 重新设定定时器
timeout = setTimeout(fn, wait)
}
}
}
以上函数的作用是 最多delay(ms)内执行一次 mustRun(ms) 时间间隔内最少执行一次