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);
  };
}
相关文章
|
JavaScript
JS中防抖和节流的区别是什么
JS中防抖和节流的区别是什么
122 0
|
JavaScript 前端开发 UED
【面试题】面试官:说说你对js中的 防抖 和 节流 的理解
【面试题】面试官:说说你对js中的 防抖 和 节流 的理解
169 0
|
前端开发 JavaScript Java
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
【JavaScript】JavaScript 防抖与节流:以游戏智慧解锁实战奥秘
212 3
|
JavaScript 前端开发 UED
深入理解JavaScript中的节流与防抖技术
理解并合理运用节流与防抖技术,可以帮助我们优化事件处理函数的执行频率,从而提升应用的性能和用户体验。这两种技术通过减少不必要的计算和DOM操作,使得Web应用程序能够更加流畅地运行。 通过掌握防抖和节流的实现原理及应用场景,开发者可以更加灵活地编写高效且性能优化的代码,对于面对高频事件处理时尤其重要。在开发中合理选择使用防抖或节流,将直接影响到应用的响应性和效率。
181 1
|
前端开发 JavaScript UED
JavaScript防抖和节流的使用及区别
JavaScript防抖和节流的使用及区别
302 57
|
JavaScript 前端开发
js防抖函数返回值问题解决方案
本文介绍了如何在JavaScript中创建一个带有返回值的防抖函数,通过结合Promise来实现。这种防抖函数可以在事件触发一定时间后再执行函数,并能处理异步操作的返回值。文章提供了防抖函数的实现代码和如何在实际项目中使用该防抖函数的示例。
154 1
|
JavaScript 前端开发 UED
JS 防抖与节流
防抖和节流是优化高频事件处理的技术。针对如`scroll`、`resize`等频繁触发的事件,它们能有效减少不必要的回调执行,节省资源。防抖确保在一段时间内仅执行最后一次操作,适用于输入框自动补全等场景;而节流则按固定间隔执行函数,适合拖拽、滚动事件。通过简单的JavaScript实现,可以显著提升应用性能和用户体验。
208 1
JS 防抖与节流
|
JavaScript 前端开发 UED
js的防抖节流
js的防抖节流
102 1
|
测试技术
js_防抖与节流(闭包的使用)
js_防抖与节流(闭包的使用)
100 0
|
JavaScript 前端开发 UED
JavaScript:节流&防抖
JavaScript:节流&防抖
148 1