8

我想推迟一些事件代码的执行。setTimeout使用标准函数和插件 debounce (链接到 debounce )之间到底有什么区别?

这是一个例子 setTimeout

var timeout;
$(window).on("scroll", function() {

    clearTimeout(timeout);
    timeout = setTimeout(function() {

        doSomethingFunction();

    }, 500);

});

这是一个 debounce 的例子

$(window).on("scroll",

    $.debounce(500, doSomethingFunction)

);

当然,去抖动代码更短,但还有其他好处吗? 哪个会更快?

4

1 回答 1

12

debounce在内部使用,因此差异与被触发setTimeout的次数有关。setTimeout

debounce限制它触发的次数setTimeout。如果在短时间内发送多个请求,则只有一个会通过。

var timeout_id = setTimeout(
    debounce_mode ? clear
    : exec, debounce_mode === undefined ? delay - elapsed
    : delay
);

您可以查看源代码以获取更多信息。

该插件将通过设置超时 id 来处理超时。

于 2014-08-02T12:01:54.993 回答