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。短期間に複数のリクエストが送信された場合、1 つだけが送信されます。

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

詳細については、ソース コードを確認できます。

プラグインは、タイムアウト ID を設定してタイムアウトを処理します。

于 2014-08-02T12:01:54.993 に答える