【前端工程师手册】30分钟看懂函数防抖和节流

简介: 【前端工程师手册】30分钟看懂函数防抖和节流

防抖和节流


假如有一个饮水机,规定按下按钮之后2秒后开始出水,有个闲得x疼的人很快的按按钮10秒,饮水机会作何反应呢?

防抖(debounce):在按下按钮和出水的这2秒内如果还有人按按钮,饮水机会重新开始计算2秒,也就是说总是以最新的操作为基准来计算时间

节流:即使被人不间断的按按钮了10秒钟,但是饮水机依然不紧不慢的2s出一次水,也就是说不管外部操作的多快,饮水机总会有自己的频率


代码实现


防抖


function debounce(func, delay) {
    var timer;
    return function() {
        clearTimeout(timeout);
        timer = setTimeout(function(){
          func();
        },delay)
    };
};
复制代码

节流


function throttle(fn, threshhold) {
 var timer
 var start = Date.now();
 return function () {
    var curr = Date.now();
    clearTimeout(timer)
    if(curr - start >= threshhold){ 
        fn()
        start = curr
 }else{
     timer = setTimeout(function(){
        fn() 
     }, threshhold);
    }
  }
}
复制代码

说一个神器:可视化的防抖和节流,以动画的形式看到两者的区别


使用场景


防抖:频繁操作但是只需要响应最后一次即可


  • 输入框验证,只需要对最后一次输入事件作出验证即可
  • resize事件
  • ...


节流:调节频率,以一定的频率去响应


  • 搜索联想
  • 响应拖拽
  • ...



相关文章
|
缓存 JavaScript 前端开发
2023Web前端开发面试手册
2023Web前端开发面试手册
279 0
|
4月前
|
前端开发 UED 开发者
颠覆你的前端知识:防抖与节流的区别及实战解析!
【8月更文挑战第23天】在Web前端开发中,处理用户界面交互产生的事件可能会影响性能。为此,我们有两种优化方法:防抖(debounce)和节流(throttle)。防抖确保函数仅在事件停止触发一段时间后执行一次,适用于如搜索自动补全场景。而节流则确保函数按固定时间间隔执行,不管用户操作频率如何。本篇技术博客将深入解析两者差异并提供示例代码,帮助开发者更好地理解和应用这些技巧以提升应用性能和用户体验。
91 0
|
2月前
|
前端开发
前端常用方法防抖(debounce)和节流(throttle)的示例演示及应用场景说明
前端常用方法防抖(debounce)和节流(throttle)的示例演示及应用场景说明
37 0
|
3月前
|
缓存 边缘计算 前端开发
关于前端性能优化问题,认识网页加载过程和防抖节流
该文章详细探讨了前端性能优化的方法,包括理解网页加载过程、实施防抖和节流技术来提升用户体验和性能。
|
5月前
|
缓存 开发框架 前端开发
前端性能优化【前端必备】(含懒加载,手写防抖、节流等)
前端性能优化【前端必备】(含懒加载,手写防抖、节流等)
79 4
|
5月前
|
开发框架 前端开发 JavaScript
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
|
7月前
|
前端开发 JavaScript 搜索推荐
前端网页手册(2)--菜鸟教程网站分析
前端网页手册(2)--菜鸟教程网站分析
74 2
|
7月前
|
前端开发 JavaScript 关系型数据库
前端网页手册(1)--基础学习
前端网页手册(1)--基础学习
37 1
|
7月前
|
前端开发 JavaScript UED
【专栏】前端开发中,为解决用户操作引发的性能问题,常使用debounce(防抖)和throttle(节流)技术
【4月更文挑战第29天】前端开发中,为解决用户操作引发的性能问题,常使用debounce(防抖)和throttle(节流)技术。Debounce确保在一段时间内只执行最后一次事件触发的操作,减少不必要的执行,但有滞后性,适合搜索框实时搜索。Throttle则保证一定时间间隔内函数执行一次,保持固定频率,适用于滚动事件处理和窗口大小调整。两者可借助JavaScript或第三方库实现,需根据场景和需求选择并调整。正确使用能提升应用性能和用户体验。
60 1
|
7月前
|
前端开发 JavaScript UED
【前端面经】快手二面:节流和防抖知道吗?
【前端面经】快手二面:节流和防抖知道吗?
54 0