Javascript延迟事件

Javascript delay event

本文关键字:事件 延迟 Javascript      更新时间:2024-01-30

我有一个函数handleScroll,当窗口的滚动位置发生变化时需要调用它。这是的代码

$(window).scroll(handleScroll);

但问题是,上面的代码最终调用handleScroll的频率过高。我如何修改上面的代码,以便只有在用户停止滚动200毫秒后才能调用handleScroll?

var timeoutHandle;
$(window).scroll(function(e) {
    if (timeoutHandle) {
        clearTimeout(timeoutHandle);
    }
    timeoutHandle = setTimeout(function() {
        handleScroll(e);
        timeoutHandle = null;
    }, 200);
});

使用underscorejs库,它可以像一样简单

var debounceid = _.debounce(handleScroll, 200);
$(window).resize(debounceid);