/**
* 封装定时器,解决多次调用定时器叠加问题及定时器无法清除的问题
* @param {function} func - 需要执行的函数
* @param {number} delay - 延迟时间,单位:毫秒
* @param {boolean} immediate - 是否立即执行一次,默认为false
* @returns {function} - 返回一个清除定时器的函数
*/
function debounce(func, delay, immediate = false) {
let timer;
return function() {
let context = this;
let args = arguments;
if (timer) {
clearTimeout(timer);
}
if (immediate) {
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, delay);
if (callNow) {
func.apply(context, args);
}
} else {
timer = setTimeout(() => {
func.apply(context, args);
}, delay);
}
return function() {
clearTimeout(timer);
};
};
}
JavaScript定时器封装解决重叠和清除问题
文件列表
demp.rar
(预估有个2文件)
demp
demo.js
342B
demo.html
2KB
暂无评论