Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';I don’我不能解释为什么`..debounce`是这样工作的?_Javascript_Lodash - Fatal编程技术网

Javascript Can';I don’我不能解释为什么`..debounce`是这样工作的?

Javascript Can';I don’我不能解释为什么`..debounce`是这样工作的?,javascript,lodash,Javascript,Lodash,我使用lodash debounce来防止用户在很短的时间内按键盘两次。下面是不起作用的代码: window.addEventListener('keydown', _.debounce((e) => this.keyDown(e), 300), false); 但如果我改为: window.addEventListener('keydown', this.debounceKeyFunc.bind(this), false); debounceKeyFunc = _.debounce((

我使用lodash debounce来防止用户在很短的时间内按键盘两次。下面是不起作用的代码:

window.addEventListener('keydown', _.debounce((e) => this.keyDown(e), 300), false);
但如果我改为:

window.addEventListener('keydown', this.debounceKeyFunc.bind(this), false);
debounceKeyFunc = _.debounce((e) => this.keyDown(e), 300);
debounceKeyFunc
是当前类的实例的方法,如
this.debounceKeyFunc

我不明白为什么我需要定义一个单独的函数来解除键事件回调的影响,以使其工作。

--edit--实际上,我写的是真的,但不适用于这里。 当句柄注册并且应该工作时,只调用一次debounce。 第一个也适用于我,除了没有定义的脸

--编辑--

您必须确保只创建一次解Bouncing函数,因为它保存用于解Bouncing的内部状态,并记住上次调用它的时间

在第一个示例中,在每个事件上都会创建去抖动函数,这意味着每次都会重新开始去抖动,这意味着没有什么可以去抖动的,因为每个事件都有自己的去抖动


我希望这能解释,否则就问吧。

反过来呢?第二个片段不起作用。->pleaseBoth版本是正确的,可以使用。@dfsq我不是舒尔,在设置变量值之前可以访问它…@JonasW。OP刚刚这样发布,
debounceKeyFunc
是某个对象实例的一种方法,可用作
this.debounceKeyFunc
@dfsq它看起来相同,但第一个不起作用,这对我的问题有意义。但是你能解释一下为什么
https://jsfiddle.net/W4QfJ/8869/
没有这样的问题。我想说,每次新的事件都会开始反弹,对吗?@ZhaoYi看到我的最新答案。那么,是什么情况给你带来了麻烦?