日期:2013-6-25  来源:GBin1.com

高频执行事件/方法的防抖

通常,开发人员会在有用户交互参与的地方添加事件,而往往这种事件会被频繁触发。想象一下窗口的resize事件或者是一个元素的onmouseover事件 - 他们触发时,执行的非常迅速,并且触发很多次。如果你的回调过重,你可能使浏览器死掉。

这就是为什么我们要引入防抖。

防抖可以限制一个方法在一定时间内执行的次数。以下代码是个防抖示例:

// 取自 UnderscoreJS 实用框架

function debounce(func, wait, immediate) {

var timeout;

return function() {

var context = this, args = arguments;

var later = function() {

timeout = null;

if (!immediate) func.apply(context, args);

};

var callNow = immediate && !timeout;

clearTimeout(timeout);

timeout = setTimeout(later, wait);

if (callNow) func.apply(context, args);

};

}

// 添加resize的回调函数,但是只允许它每300毫秒执行一次

window.addEventListener('resize', debounce(function(event) {

// 这里写resize过程

}, 300));

debounce方法返回一个方法,用来包住你的回调函数,限制他的执行频率。使用这个防抖方法,就可以让你写的频繁回调的方法不会妨碍用户的浏览器!

下一篇,我们将介绍网络存储中静态缓存和非必要内容的优化方法。

java接口防抖_前端性能优化:高频执行事件/方法的防抖相关推荐

  1. dll文件懒加载_前端性能优化

    # 前端性能优化 写在最前面:下面都是我对webpack的一些性能优化,想系统的学习性能优化方面的知识 推荐大家看看这本书 很系统 感觉面试也能如鱼得水 ## 构建优化 ### webpack优化 ( ...

  2. 前端白屏问题_前端性能优化之白屏时间

    前言 该篇文章会为您分享在前端性能优化中非常重要的一环-白屏时间,将从白屏时间的概念.重要性以及白屏的过程一一进行阐述,同时提供性能优化的策略与实践. 一.概念 白屏时间:即用户点击一个链接或打开浏览 ...

  3. 前端性能优化的七种方法

    前端性能优化主要有七种方法,包括减少请求数量.减少资源大小.优化网络连接.优化资源加载.减少重绘回流.使用性能更好的API和webpack优化 1.减少请求数量 1.1 图片处理 1.1.1 雪碧图 ...

  4. java 判断语句 性能_前端性能优化:js中优化条件判断语句

    在开发过程中,由于追求开发速度,我们往往很多时候都没有注意代码的可读性与性能,这里介绍几个技巧,让你写出可读性强.简洁的js代码 1.多个条件满足之一时,推荐使用Array.includes// 优化 ...

  5. html个人主页_前端性能优化实践 之 百度App个人主页优化

    作者:潘铭 @祝余 前言 性能是每个前端工程师都应该关注的话题,通用的优化手段已有许多文章和实践,就不再赘述,本篇以百度App个人主页为例,聊聊针对业务特点进行的一些性能优化实践. 适用于:传统意义的 ...

  6. vue 一个页面有点请求需要同时发送_前端性能优化,这些你都需要知道

    来源: 海洋里的魔鬼鱼 前言 最近花了一些时间在项目的性能优化上,背后做了很多工作,但是最后依然没有达到自己想要的结果,有些失望,但是还是记录下自己的执着. 性能优化总结:减少请求次数.减小资源大小. ...

  7. android 重绘如何能不闪一下屏幕_前端性能优化之重绘和重排

    性能优化中,减少重绘重排应该是一种很好的优化方式,我们具体看一下什么情况下会造成重绘重排,为什么减少重绘重排可以做到优化,怎么样减少重绘重排. 浏览器渲染过程 我们先看看当浏览器拿到服务端返回的资源时 ...

  8. 事件触发控制_前端性能优化:事件的节流throttle与防抖debounce

    scroll 事件是一个非常容易被反复触发的事件,另外,resize 事件.鼠标事件(比如 mousemove.mouseover 等).键盘事件(keyup.keydown 等)都存在被频繁触发的风 ...

  9. webpack打包优化_前端性能优化:webpack性能调优与Gzip原理

    链接:https://juejin.im/book/5b936540f265da0a9624b04b 从输入 URL 到显示页面这个过程中,涉及到网络层面的,有三个主要过程: DNS 解析 TCP 连 ...

最新文章

  1. 我崩溃了!月薪30K必须掌握的开源项目Java中SPI机制
  2. matlab上机实验报告,MATLAB上机实验
  3. python︱HTML网页解析BeautifulSoup学习笔记
  4. ndows live id怎么登陆,手机如何注册和使用Windows Live ID帐号
  5. 手把手教你可复用的SSO组件设计(设计篇)
  6. 时序数据库连载系列: 时序数据库一哥InfluxDB之存储机制解析 1
  7. Mybatis框架插件PageHelper的使用
  8. Python学习笔记之文件
  9. 10分钟学会python函数式编程
  10. Linux文件夹的介绍
  11. win7鼠标右键无响应修复
  12. T2695 桶哥的问题——送桶 题解
  13. 微信公众号 创建菜单post数据格式
  14. Java程序员掉发系列——程序员的成长之路
  15. html去除页面的滑动条
  16. linux基础知识大纲
  17. 司美格鲁肽进入临床竞速期,减肥“神药”生于偶然、火于乱象?
  18. lesson1-breeds
  19. Linux·内核源码简单分析
  20. 半入耳蓝牙耳机评测,南卡和锤子真无线蓝牙耳机哪个更值得入手?

热门文章

  1. React-Native android在windows下的踩坑记
  2. php高版本不再使用mysql_connect()来连接数据库
  3. ofbiz之entity 实体解析 扩展 视图 复合列写法
  4. Netbackup Status code 6解决思路
  5. 如何使用dmidecode命令查看硬件信息
  6. 计算机教案word格式模板,用自定义模板编辑教案
  7. c# poi写入e_C# 面向对象 静态类和静态成员
  8. BufferedInputStream的read方法原理
  9. 华为nova3android,华为nova3和3i哪个好 华为nova3i和nova3区别对比
  10. i2c hid 触摸板不能用_I2C 总线协议初探 - STM32 I2C 接口外设学习笔记