我想推迟在事件上执行一些代码。
使用标准setTimeout
函数和插件去抖(link to debounce)之间究竟有什么区别?
以下是 setTimeout
的示例:
var timeout;
$(window).on("scroll", function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
doSomethingFunction();
}, 500);
});
这是debounce的一个例子:
$(window).on("scroll",
$.debounce(500, doSomethingFunction)
);
当然,对于去抖,代码更短但是还有其他好处吗? 哪一个更快?
答案 0 :(得分:5)
debounce
在内部使用setTimeout
,因此差异与setTimeout
被解雇的次数有关。
debounce
限制它发射的次数setTimeout
。如果在短时间内发送多个请求,则只会有一个请求通过。
var timeout_id = setTimeout(
debounce_mode ? clear
: exec, debounce_mode === undefined ? delay - elapsed
: delay
);
您可以查看the source code了解详情。
插件将通过设置超时ID来处理超时。