节流和防抖
Posted jscai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了节流和防抖相关的知识,希望对你有一定的参考价值。
在某些业务场景会频繁触发事件,如果不想频繁触发 这时候就需要用到函数节流和函数防抖了。
如果频繁用到 且还有去重 深浅拷贝 柯里化 推荐Lodash(https://www.lodashjs.com/)
//防抖函数(函数名,时间,是否立即实行)
function debounce(func, wait, immediate) {
let timeout, result;
let debounced = function () {
//改变this指向
let _this = this;
//改变event指向
let args = arguments;
clearTimeout(timeout);
if (immediate) {
//立即执行
let callnow = !timeout;
timeout = setTimeout(() => {
timeout = null;
}, wait);
if (callnow) {
result = func.apply(_this, args);
}
} else {
//延迟执行
timeout = setTimeout(function () {
func.apply(_this, args);
}, wait);
}
return result;
}
//取消操作
debounced.cancel = function () {
clearTimeout(timeout);
timeout = null;
}
return debounced;
}
以上是关于节流和防抖的主要内容,如果未能解决你的问题,请参考以下文章