本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/09/20/%E4%BB%80%E4%B9%88%E6%98%AFDebounce/
摘要
本文主要讲述了:
- 什么是 Debounce
- 模式
- 实现
- underscope 的实现
正文
什么是 Debounce
Debounce(防抖)是一种“当函数被连续调用时”防止“函数连续执行”的算法。
防抖函数被第一次调用时并不会立即执行,而是直接返回上一次调用的返回值。同时防抖函数将进入时长为t
毫秒的等待期,等待期结束后,防抖函数将执行第一次调用。
等待期内,如果防抖函数被第二次调用,那么第一次调用的执行将被取消并直接返回上一次调用的返回值。同时等待期将从零开始计时,等待期结束后,防抖函数将执行第二次调用。
等待期内,如果防抖函数被第三次调用,那么第二次调用的执行将被取消并直接返回上一次调用的返回值。同时等待期将从零开始计时,等待期结束后,防抖函数将执行第三次调用。
等待期内,如果防抖函数被第i
次调用,那么第i-1
次调用的执行将被取消并直接返回上一次调用的返回值。同时等待期将从零开始计时,等待期结束后,防抖函数将执行第i
次调用。
模式
前沿执行
防抖函数被第一次调用时,防抖函数将立即执行第一次调用。等到第一次调用执行完成后,防抖函数会进入时长为t
毫秒的等待期。
等待期内,如果防抖函数被第二次调用,那么第二次调用将不会执行并直接返回上一次调用的返回值,同时等待期将从零开始计时。
等待期内,如果防抖函数被第三次调用,那么第三次调用将不会执行并直接返回上一次调用的返回值,同时等待期将从零开始计时。
等待期内,如果防抖函数被第i
次调用,那么第i
次调用将不会执行并直接返回上一次调用的返回值,同时等待期将从零开始计时。
实现
1 | /** |
underscope 的实现
1 | _.debounce = function (func, wait, immediate) { |
参考资料
本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/09/20/%E4%BB%80%E4%B9%88%E6%98%AFDebounce/
本文对你有帮助?请支持我
- 本文链接: https://jsweibo.github.io/2019/09/20/%E4%BB%80%E4%B9%88%E6%98%AFDebounce/
- 版权声明: 除非另有说明,否则本网站上的内容根据署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。