美文网首页
关于_.throttle和_.debounce的理解

关于_.throttle和_.debounce的理解

作者: c50a398959dc | 来源:发表于2016-01-14 00:47 被阅读252次

    _.throttle(func, [wait=0], [options])

    生成节制函数,用于节制func函数在特定wait周期内最多执行1次。

    • 当options为{ leading: true, trailing: false }时,首次触发func将立即执行,并开始进入冷却期,冷却期内触发func将被忽略。计时wait毫秒后冷却期结束,后面触发func又会立即执行,并再次进入冷却期…

    • 当options为{ leading: false, trailing: true }时,首次触发func将被推迟,进入预热期,期间触发func将被忽略,计时wait毫秒后结束预热,推迟的func在此时得以执行,之后触发func又将被推迟… (预热后执行func使用的是最后一次触发的参数,即是说预热期内触发func将更新被推迟的func调用参数)

    • 当options为{ leading: true, trailing: true }时,首次触发func将立即执行,并进入冷却期,计时wait毫秒结束,期间有触发func的话,将在冷却期结束时执行,并在次进入冷却期…(冷却期内触发的func调用被压缩成一次,在冷却完后执行)

    • 当options为{ leading: false, trailing: false}时,我的理解是任何时刻触发func都不会被执行,但实际试验结果是与{ leading: true, trailing: false }相同,求解释。

    _.debounce(func, [wait=0], [options])

    生成防抖函数,设定一个wait冷静周期,计时周期内没有触发func才能结束冷静期,否则重新计时。

    • 当options为{ leading: true, trailing: false }时,首次触发func将立即执行,并进入冷静期,冷静期触发func将被忽略但会导致计时重新开始,直至wait周期内没有再触发func才能结束。冷静期完后再次触发func又将立即执行并进入新的冷静期…

    当options为其它组合值时,猜想和_.throttle类似。

    警告

    这里的文字解释是我对lodash里面debounce和throttle方法的理解,我个人没有多少Javascript编程经验,只是好奇在学习它,上面的解释有可能是 错误 的,在这里分享希望得到高手指点。

    相关文章

      网友评论

          本文标题:关于_.throttle和_.debounce的理解

          本文链接:https://www.haomeiwen.com/subject/hdnckttx.html