1.封装
某个函数在短时间内只执行最后一次
意思也就是说,函数被触发时,需要先延迟,在延迟的时间内,如果再次被触发,则取消之前的延迟,重新开始延迟。这样就能达到,只响应最后一次,其余的请求都过滤掉。
这种处理方式有很多实际的应用场景:比如对输入框数据的校验处理,没必要每输入一个字符就校验一遍;
var self = { // 防抖 _debounce(fn, delay) { let timer = null; return function () { let args = arguments; let context = this; if (timer) { clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); } else { timer = setTimeout(function () { fn.apply(context, args); }, delay); } }; }, }; module.exports = self;
2.调用
import commonFunc from "UTIL/commonFunc"; handleSearch = commonFunc._debounce((value) => { console.log(value) }, 300);
.