关于js的防抖,业界有lodash函数工具库可以参考,也有很多同学提供了setTimeout的方式进行处理。不过就工具类是否使用以及使用哪一方的,都和个人以及团队的喜好相关,我们更关注其原理而非工具本身。
本文根据setTimeout的机制进行了调整,用以适用在公司项目开发中,提供以下方法
说明:md5_hex方式是md5算法对数据进行hash,可以自行下载https://download.csdn.net/download/u010899138/12614308
1.debounce函数
立即执行,适用于页面进入后立即加载数据,在wait时间内,fun的调用不会再执行
调用示例
// 默认执行后,在1500毫秒内再次执行只会输出一次debounce
CommonUtil.debounce(
() => {
console.log('debounce')
}
)
// 第二次调用,只会有一个debounce执行
CommonUtil.debounce(
() => {
console.log('debounce')
}
)
1.debounce函数
等待wait时间后,执行fun的调用,适用于输入框输入自动获取结果的场景
在wait时间内再次执行,会重置wait的等待时间
调用示例
// 默认在1500毫秒后输出debounce
CommonUtil.debounce(