代码之家  ›  专栏  ›  技术社区  ›  leonheess

lodash不作为内部功能使用

  •  0
  • leonheess  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 6 年前
        1
  •  2
  •   CertainPerformance    6 年前

    _.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
    });
    
        2
  •  2
  •   Keith    6 年前

    下面是一个使用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>