gpt4 book ai didi

javascript - 无法解释为什么 `_.debounce` 会这样工作?

转载 作者:行者123 更新时间:2023-11-30 20:41:30 26 4
gpt4 key购买 nike

我使用 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 只在 handle 被注册并且应该工作时被调用一次。第一个对我也有用,除了这个没有定义的面孔

-- 编辑--

您必须确保去抖动函数只创建一次,因为它拥有用于去抖动的内部状态,记住上次调用它的时间。

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

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

关于javascript - 无法解释为什么 `_.debounce` 会这样工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49203130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com