我发现了一个错误,并对其进行了跟踪。
您可以在此处查看我的代码的简化示例。
事实证明,我需要对我的if()
语句进行去抖动而不是对函数本身进行去抖动。
我想保持 debounce 作为一个独立的函数,但我不确定如何传递条件。
任何指针?
这是代码:
var foo = function(xyz) {
alert(xyz);
};
function setter(func, arg1, arg2) {
return {
fn: func,
arg1: arg1,
arg2: arg2
};
}
function debounce(someObject) {
var duration = someObject.arg2 || 100;
var timer;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
someObject.fn(someObject.arg1);
timer = 0;
}, duration);
}
var toggle = true;
if (toggle) {
debounce(setter(foo, 'The best things in life are worth waiting for.', 1250));
} else {
foo('Instant gratification is sweet!!');
}