Функция JavaScript Debounce - PullRequest
0 голосов
/ 03 июля 2018

Я создал одну функцию отладки JavaScript, мне нужно мнение эксперта JavaScript, если это правильный способ сделать это, а если нет, то в чем недостаток этой текущей функции. Заранее спасибо за ваше мнение, это поможет мне учиться.

var debounce = function(inpFun, wait) {
    var timeout;
    return function () {
        if(!timeout) {
            inpFun.apply(this, arguments);
            timeout = setTimeout(function() {
                timeout = undefined;
            }, wait);
        }
        else {
            console.log("Debouncing");
        }
    }
};

var buttonClickFunction = debounce(function (event) {
    console.log("Button Clicked");
    console.log(event.target.id);
}, 2000);



document.querySelector("#button1").addEventListener("click", buttonClickFunction);
<button id="button1">Button</button>

1 Ответ

0 голосов
/ 03 июля 2018

На мой взгляд, наиболее полезная вещь в подобных ситуациях - посмотреть на то, что сделали профессионалы. Итак, lodash и underscore предоставляют реализации debounce, и вы можете найти их так:

  1. документы: https://lodash.com/docs/4.17.10#debounce
  2. код: https://github.com/lodash/lodash/blob/master/debounce.js

Если вы хотите глубоко понять этот вид кода, прочитайте историю коммитов для этого файла, прочитайте пост в блоге о разнице между газами и дебазами в первой ссылке, и в целом просто впитайте как можно больше от того, что другие боролся с.

...