-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
debounce(防抖)和throttle(节流)是为了阻止用户高频率的执行某些复杂操作。比如表单提交、点击事件、输入框等等一系列场景。
debounce:
原理就是推迟用户操作的真正触发事件时间,在限定时间内没有再次操作时进行真正的触发。
其中,推迟时间是以事件最后一次触发为准。
function debounce(fn, delay) {
var ctx;
var args;
var timer = null;
var later = function () {
fn.apply(ctx, args);
// 当事件真正执行后,清空定时器
timer = null;
};
return function () {
ctx = this;
args = arguments;
// 当持续触发事件时,若发现事件触发的定时器已设置时,则清除之前的定时器
if (timer) {
clearTimeout(timer);
timer = null;
}
// 重新设置事件触发的定时器
timer = setTimeout(later, delay);
};
}Metadata
Metadata
Assignees
Labels
No labels