我有这个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);
..根本不起作用。我感谢每一个想法和帮助!提前谢谢!
答案 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>