js、vue防抖函数、节流函数,⼯具类封装
防抖函数(可⽤于防⽌重复提交)
当持续触发事件时,⼀定时间段内没有再触发事件,事件处理函数才会执⾏⼀次,如果设定时间到来之前,⼜触发了事件,就重新开始延时。也就是说当⼀个⽤户⼀直触发这个函数,且每次触发函数的间隔⼩于既定时间,那么防抖的情况下只会执⾏⼀次。
/**
* 防抖函数(可⽤于防⽌重复提交)
* 当持续触发事件时,⼀定时间段内没有再触发事件,事件处理函数才会执⾏⼀次,
* 如果设定时间到来之前,⼜触发了事件,就重新开始延时。也就是说当⼀个⽤户⼀直触发这个函数,
* 且每次触发函数的间隔⼩于既定时间,那么防抖的情况下只会执⾏⼀次。
*
* @param func 执⾏函数
* @param wait 间隔时间戏曲分类
* @param immediate ⽴即执⾏
*/
function debounce(fn, wait, immediate) {
let timer;
return function() {
if (timer) clearTimeout(timer);
if (immediate) {
// 如果已经执⾏过,不再执⾏
var callNow = !timer;
timer = tTimeout(() => {
timer = null;
}, wait)
if (callNow) {
fn.apply(this, arguments)
}日本名校
} el {
开讲啦郑强
timer = tTimeout(() => {
fn.apply(this, arguments)
羊肉下奶吗
}, wait);
}
}
}
节流函数
当持续触发事件时,保证在⼀定时间内只调⽤⼀次事件处理函数,意思就是说,假设⼀个⽤户⼀直触发这个函数,且每次触发⼩于既定值,函数节流会每隔这个时间调⽤⼀次
⽤⼀句话总结防抖和节流的区别:防抖是将多次执⾏变为最后⼀次执⾏,节流是将多次执⾏变为每隔⼀段时间执⾏
实现函数节流我们主要有两种⽅法:时间戳和定时器
/**
幼儿园食品安全教案* 节流函数
* 当持续触发事件时,保证在⼀定时间内只调⽤⼀次事件处理函数,意思就是说,假设⼀个⽤户⼀直触发这个函数,且每次触发
* ⼩于既定值,函数节流会每隔这个时间调⽤⼀次
* ⽤⼀句话总结防抖和节流的区别:防抖是将多次执⾏变为最后⼀次执⾏,节流是将多次执⾏变为每隔⼀段时间执⾏
* 实现函数节流我们主要有两种⽅法:时间戳和定时器
*
* @param func 执⾏函数
* @param wait 间隔时间
* @param options ⽴即执⾏
* options中 leading:fal 表⽰禁⽤第⼀次执⾏ trailing: fal 表⽰禁⽤停⽌触发的回调
*/
function throttle(fn, wait, options = {}) {
let timer;
let previous = 0;
let throttled = function() {
let now = +new Date();
// remaining 不触发下⼀次函数的剩余时间
if (!previous && options.leading === fal) previous = now;
let remaining = wait - (now - previous);
if (remaining < 0) {
if (timer) {
clearTimeout(timer);
timer = null;
}
previous = now;
表态性发言
清明节的图片fn.apply(this, arguments)
重庆丰都鬼城} el if (!timer && ailing !== fal) {
timer = tTimeout(() => {
previous = options.leading === fal ? 0 : new Date().getTime();
timer = null;
fn.apply(this, arguments);
}, remaining);
}
}
return throttled; }