具有maxWait的抖动处理(debounce)在第一次后开始在"leading"边缘发射

bman654
创建于
2016-03-07 04:50:00

这是使用lodash 4.6.1。如果我使用如下代码:

var d = _.debounce(func, 1000, { maxWait: 2000 });

// or, this way:
// var d = _.debounce(func, 1000, { maxWait: 2000, leading: false, trailing: true });

然后,当我第一次多次调用d()时,它的工作方式与我预期的完全一样:

func最初未调用。但它被称为每2000毫秒,直到活动停止至少1秒,然后它被称为最终时间。

但是,如果在初始测试之后,我再次调用d,则立即调用func。如果我随后等待几秒钟并再次调用d,则立即再次调用func。换句话说,在第一次活动突发之后,随后的突发导致我的函数(function)在前缘和后缘都被调用。

以下是显示问题的jsFiddle:https://jsfiddle.net/m2LgLxtL/

下面是一个交互式版本:http://jsfiddle.net/ex9ej87k/2/
在2米处点击一束,然后停止。它像预期的那样工作。现在单击一次,下一个标记立即高亮显示。等一会儿。再次单击。它会立即高亮显示again...and,依此类推。

4条回答
bman654
回复于
2016-03-07 05:12:44
#1

注意,它似乎在lodash 4.2.1:https://jsfiddle.net/u77ahxd4/1/中正常工作

jdalton
回复于
2016-03-07 05:46:43
#2

@bman654可以创建失败的测试PR吗?与#1952&;#1964相关。

jdalton
回复于
2016-03-07 20:04:00
#3

已移动到#2093

回复于
2019-01-19 06:50:12
#4

此线程已自动锁定,因为在它关闭后没有任何最近的活动。请为相关错误打开一个新的issue。

当前位于第1页,总计4条回复

基本信息

  • 回复数:329
  • 讨论框架:lodash
  • 原始内容:查看信息
  • 最后更新于:2020-10-23