JavaScript 自己实现 防抖 (debounce)

简介: JavaScript 自己实现 防抖 (debounce)

思路

防抖函数原理:在事件被触发 n 秒后再执行回调,如果在这 n 秒内又被触发,则重新计时

防抖动是将多次执行变为最后一次执行,节流是将多次执行变成每隔一段时间执行。

场景

  • 按钮提交

    • 分支多次提交,只执行最后一次提交
  • 表单验证

    • 需要服务端验证表单的情况,只执行一段连续输入事件的最后一次
    • 搜索联想词

实现

/**
 * @param {Function} fn
 * @param {Number} delay
 */
function debounce (fn, delay = 50) {
  let timer = 0;
  return function (...args) {
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      fn.apply(this, args);
    }, delay);
  };
}
相关文章
|
3月前
|
JavaScript
JS中防抖和节流的区别是什么
JS中防抖和节流的区别是什么
23 0
|
3月前
|
JavaScript 前端开发 UED
【面试题】面试官:说说你对js中的 防抖 和 节流 的理解
【面试题】面试官:说说你对js中的 防抖 和 节流 的理解
|
1月前
|
JavaScript
|
2月前
|
前端开发 JavaScript UED
【JavaScript】面试手撕防抖
防抖: 首先它是常见的性能优化技术,主要用于处理频繁触发的浏览器事件,如窗口大小变化、滚动事件、输入框内容改变等。在用户连续快速地触发同一事件时,防抖机制会确保相关回调函数在一个时间间隔内只会被执行一次。
36 0
|
3月前
|
JavaScript 前端开发
js的节流和防抖
js的节流和防抖
17 0
|
3月前
|
JavaScript 前端开发 UED
|
3月前
|
JavaScript 前端开发 UED
JavaScript:节流&防抖
JavaScript:节流&防抖
30 1
|
3月前
|
JavaScript 前端开发 搜索推荐
面试官:请说说JS中的防抖和节流
面试官:请说说JS中的防抖和节流
|
3月前
|
前端开发 JavaScript 程序员
【面试题】 js-面试官要求手写节流防抖?
【面试题】 js-面试官要求手写节流防抖?
|
5月前
|
JavaScript 前端开发 Java
手写JavaScript防抖节流和休眠函数
防抖原理是在一定时间内,只有最后一次操作,再过延迟的时间后执行,一般用于防止用户多次重复点击按钮,只会触发最后一次
31 0