1.函数防抖
当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定时间之内,又触发了事件,就重新开始延时。也就是说一直触发这个函数,且每次触发函数的间隔小于既定时间,那么防抖的情况下只会执行一次。
// 防抖
function debounce (fn, delay = 500){
let timeout = null
return function () {
const argue= arguments
if (timeout) clearTimeout(timeout)
timeout = setTimeout(() => {
fn.call(this,arg)
},delay)
}
}
2.函数节流
当持续触发事件时,保证在一定时间内只调用一次事件处理函数,也就是说一直触发这个函数,且每次触发小于既定值,函数节流会每隔这个时间调用一次
// 节流
function throttle (fn, delay = 500) {
let last = 0
return function () {
const curr = Date.now()
if (curr - last > delay) {
last = curr
fn.apply(this,arguments)
}
}
}
简单总结一下防抖和节流的区别:防抖是将多次执行变为最后一次执行,节流是将多次执行变为规定时间内执行
ps:微信搜索‘ITgo’