【发布时间】:2012-06-29 23:46:54
【问题描述】:
我发现了一个错误,并对其进行了跟踪。
你可以see a simplified example of my code here。
事实证明,我需要对 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!!');
}
【问题讨论】:
-
那么这到底是做什么的呢?我知道谴责电子产品,但似乎无法弄清楚这如何适用于此。
-
你可以移动
if (toggle) {检查insidefoo函数...当然,如果你有多个函数,这会违反DRY。 -
@arttronics 据我了解,OP 想要消除(例如延迟)if-check。他不想立即测试
toggle,而是稍后,在函数实际被调用的那一刻。 -
@Šime Vidas :是的,我正试图让我的代码尽可能 DRY(不要重复自己),这就是为什么我希望将 debounce 保持为独立的一些排序。
-
@sachleen 现实生活中的实现是在设置 UI 的输入字段上。输入有上限和下限(根据环境动态生成)。如果我们需要强制执行限制,那自然必须等到用户(或应该)完成输入他们的值。 HTH。
标签: javascript