【问题标题】:JavaScript Debounce functionJavaScript 去抖功能
【发布时间】:2018-07-03 15:01:34
【问题描述】:

我构建了一个 JavaScript debounce 函数,如果这是正确的方法,我需要 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>

【问题讨论】:

  • 您应该在 codereview.stackexchange.com 上发布您的代码
  • 是codereview的新规则吗?我在哪里可以了解这种类型的工作流程?

标签: javascript function dom debounce


【解决方案1】:

在我看来,在这种情况下最有用的做法是看看专业人士做了什么。所以 lodash 和 underscore 都提供了 debounce 的实现,你可以像这样找到它们:

  1. 文档:https://lodash.com/docs/4.17.10#debounce
  2. 代码:https://github.com/lodash/lodash/blob/master/debounce.js

如果您想深入了解此类代码,请阅读该文件的提交历史记录,阅读第一个链接中关于节流和去抖动之间区别的博文,一般来说,尽可能多地从其他人那里吸收挣扎。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 2015-03-03
    • 2015-07-25
    • 2023-01-10
    • 2014-01-08
    • 2021-06-30
    • 2021-04-30
    相关资源
    最近更新 更多