我在我的应用程序中为滚动事件附加了一些繁重的功能。为了限制它的执行频率,我使用了这样的简单去抖动方法:
var timeout;
document.addEventListener("scroll", function () {
clearTimeout(timeout);
timeout = setTimeout(function () {
// some heavy code
}, 200);
});
有一个更好的方法吗?每次事件触发时,setTimeout 本身是否太重而无法调用?
编辑:我最关心的是内存使用 - 我认为每个 setTimeout 都在分配一些。这是来自 chrome 时间轴的内存分配(来自这个小提琴:http: //jsfiddle.net/hky0oekm/):