lodash不是一个内在的功能

时间:2018-04-25 06:07:34

标签: javascript jquery lodash

我有这个javascript eventlistener(因为$(document).on('scroll...);只是我们不能正常工作):

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

我现在有一些我想在每次触发听众时做的事情,以及我想在lodash的特定时间触发的一些征税事项。为了测试我简单了:

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

问题/问题是,当我把它放在一个单独的eventlistener中时它会起作用。

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);

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

2 个答案:

答案 0 :(得分:2)

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

如果你想附上那些这样的东西,也可以单独添加:

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
});

答案 1 :(得分:2)

以下是使用1个事件时@CertainPerformance所说的一个例子。

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>