编程语言
首页 > 编程语言> > javascript – 对LoDash的debounce方法的maxWait选项感到困惑

javascript – 对LoDash的debounce方法的maxWait选项感到困惑

作者:互联网

LoDash的debounce接受选项maxWait.

来自文档:

[options.maxWait] (number): The maximum time func is allowed to be delayed before it’s called.

我很困惑,是不是和使用throttle一样?有什么不同?

解决方法:

它们是一个类似的概念,但却截然不同.

maxWait – 调用函数之前等待的时间.

节流 – 呼叫之间等待的时间.

当您多次调用函数并且不希望它经常被调用时,会使用throttle.当您延迟执行单个事件时,将使用maxWait.

编辑在这里添加更多细节:

_throttle和_debounce之间的区别有点微妙.

_debounce创建一个函数:

Creates a function that will delay the execution of func until after wait milliseconds have elapsed since the last time it was invoked.

而_throttle创建一个函数:

Creates a function that, when executed, will only call the func function at most once per every wait milliseconds.

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

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

前导和尾随选项不会导致该函数的额外运行;相反,它们控制何时执行该功能.

使用前导导致函数执行,后续调用将被去抖.

使用尾随导致函数在去抖动结束时执行,这可能小于超时.基本上,您允许后续调用在最后一次去抖时间结束后立即发生,而不是强迫它们等待整个超时,如果它们在中间开始.

Note: If leading and trailing options are true func will be called on the trailing edge of the timeout only if the the debounced function is invoked more than once during the wait timeout.

所以,理论上如果你使用了所有3个选项(leading,maxWait和trailing),maxWait就不会发生,因为你永远不会超过等待期,只有在同一个等待期间调用了两次函数才会发生尾随.

标签:javascript,lodash,debouncing
来源: https://codeday.me/bug/20190717/1490899.html