假设我有这个事件处理程序:
var mousewheel = function (e) { /* blah */ };
但是,我想辩论它。所以我这样做,按预期工作:
var mousewheelDebounced = _.debounce(mousewheel, 500);
$(document).on("mousewheel", function (e) {
e.preventDefault();
mousewheelDebounced(e);
}
但这并没有按预期工作:
$(document).on("mousewheel", function (e) {
e.preventDefault();
_.debounce(mousewheel, 500)(e);
}
我更喜欢第二种形式的紧凑性。但是没有发生去抖动。
我假设没有引用mousewheelDebounced
,所以每次调用底层处理程序。这是什么原因?如果可能,我该如何清理此代码?
您可以看到 fiddle here 。
答案 0 :(得分:5)
在每个mousewheel
事件(经常发生)上,您可以创建新版本的debounce
函数。此函数没有历史记录,并且不知道在之前的事件中还创建了另一个。所以它只是运行。这就是你应该使用第一个版本的原因。