Javascript 对LoDash的maxWait选项感到困惑';s去盎司法

Javascript 对LoDash的maxWait选项感到困惑';s去盎司法,javascript,lodash,debouncing,Javascript,Lodash,Debouncing,LoDash's接受一个选项maxWait 从文档中: [options.maxWait](number):在调用func之前,允许延迟最长时间 我很困惑,这不是和使用相同吗?有什么不同吗?它们是一个相似的概念,但却完全不同 maxWait-调用函数之前等待的时间量 throttle-呼叫之间等待的时间量 throttle用于多次调用函数且不希望调用太频繁的情况最大等待用于延迟单个事件的执行 编辑在此处添加更多细节: 油门和去盎司的区别有点微妙 _去盎司创建一个函数,该函数: 创建一个函数,该函

LoDash's接受一个选项
maxWait

从文档中:

[options.maxWait]
(number):在调用
func
之前,允许延迟最长时间


我很困惑,这不是和使用相同吗?有什么不同吗?

它们是一个相似的概念,但却完全不同

maxWait
-调用函数之前等待的时间量

throttle
-呼叫之间等待的时间量

throttle
用于多次调用函数且不希望调用太频繁的情况<代码>最大等待用于延迟单个事件的执行

编辑在此处添加更多细节:

油门和去盎司的区别有点微妙

_去盎司创建一个函数,该函数:

创建一个函数,该函数将延迟func的执行,直到自上次调用func以来已过等待毫秒

而节流阀则产生一个功能,该功能:

创建一个函数,该函数在执行时,每等待毫秒最多只调用一次func函数

_debounce实际上允许后续调用发生,但会延迟它们的处理,而_throttle实际上不允许在等待期间调用

可以多次对函数进行去抖动,理论上无限期地延迟它
maxWait
可用于确保函数最终不会被调用

前导
尾随
选项不会导致函数的额外运行;相反,它们控制函数的执行时间

使用前导会导致函数执行,随后的调用会取消公告

使用
尾随
会导致函数在解盎司结束时执行,这可能会小于超时。基本上,当最后一次去抖时间结束时,允许后续调用发生,而不是强迫它们在中间开始等待它们的全部超时。 注意:如果前导和尾随选项为true,则只有在等待超时期间多次调用取消公告函数时,才会在超时的后缘调用func


因此,从理论上讲,如果您使用了所有3个选项(
leading
maxWait
trailing
),则不会出现
maxWait
,因为您永远不会超过等待时间,并且只有在同一等待时间内调用函数两次,
trailing
才会出现,你会发现油门实际上是一个很薄的去盎司包装。Throttle使用maxWait属性调用debounce


因此,如果在maxWait和training以及leading设置为true的情况下调用debounce,它将与调用throttle具有相同的效果。

ok。。。如果我将
debounce
{leading:true,maxWait:100,trailing:true}
一起使用,会怎么样?如果我调用函数loads of times,它实际会运行多少次-三次?(一个用于引导,一个用于maxWait,一个用于拖尾?)这篇博文中对
debounce
方法的可视化将有助于理解调用
func
的时间:实际上回顾一下,并再次在LoDash的文档中看到这个示例,@clais最后一个注意事项是
maxWait
不会发生。设置
maxWait
可确保函数在达到重复去抖动次数
maxWait
后调用一次calls@d48我写这个答案已经一年多了,但我想我想说的是,同时使用
前导
尾随
选项将优先于
maxWait
选项。我将回顾我对这种情况的测试,但如果您觉得答案不正确或不清楚,请随意编辑答案。鉴于油门是用maxWait()定义的,我们可以不接受或编辑此答案吗?“之前”和“之间”通话之间的区别是毫无意义的。节气门刚松开,等待时间最长。