【问题标题】:lodash not working as an inner functionlodash 不能作为内部函数工作
【发布时间】:2018-04-25 06:07:34
【问题描述】:

我有这个 javascript 事件监听器(因为 $(document).on('scroll...); 只是我们的权限不起作用):

document.addEventListener("wheel", function() {}, true);

我现在有一些我想做的事情,每次触发侦听器时我都想用lodash 在特定时间触发一些繁重的事情。为了测试,我做得很简单:

_.debounce(function() {
    console.log("triggered");
}, 200);

问题/问题是当我像这样将它放在单独的事件监听器中时它可以工作..

document.addEventListener("wheel", _.debounce(function() {
    "use strict";
    console.log("triggered");
}, 200), true);

..但是当我把它和其余的作为这样的嵌套函数放在另一个中时..

document.addEventListener("wheel", function() {
    "use strict";

    //other code that fires every time the listener is triggered

    _.debounce(function() {
        console.log("triggered");
    }, 200);    
}, true);

..它根本不起作用。我感谢每一个想法和帮助!提前致谢!

【问题讨论】:

    标签: javascript jquery lodash


    【解决方案1】:

    _.debounce 创建一个去抖函数,但默认情况下不执行它或将它绑定到任何东西; _.debounce 是一个高阶函数,因此当您调用它时,它会返回您想要作为参数传递给侦听器的函数。因此,当您在最后一个 sn-p 中的匿名侦听器函数中声明它时,它不起作用。

    如果您想附加没有像那样去抖动的东西,只需单独添加:

    document.addEventListener("wheel", _.debounce(function() {
        "use strict";
        console.log("triggered");
    }, 200), true);
    document.addEventListener("wheel", () => {
      // other code that fires every time the listener is triggered
    });
    

    【讨论】:

    • 感谢您的快速答复!那么唯一的方法是两个单独的事件监听器?
    • 另一种选择是单独创建去抖动函数,然后在单个侦听器中调用去抖动函数和其他代码。但是添加多个监听器完全没问题。
    • 问题是我需要 debounce 函数中其他代码的一些东西。哪种方式最有效?
    • Which way is the most efficient to do that? 唯一的事件监听器,因为你可以使用闭包。
    • @MiXT4PE 我已经为您发布了一个带有工作 sn-p 的答案。
    【解决方案2】:

    这是@CertainPerformance 使用 1 个事件的示例。

    const doBounced = _.debounce(function(v) {
      console.log(v);
    }, 200);
    
    
    document.addEventListener("wheel", function() {
      const n = new Date();
      console.log("triggered");
      doBounced(n);
    }, true);
    <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

    【讨论】:

    • 现在我明白了!谢谢你,先生!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多