博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
页面渲染优化——防抖与节流
阅读量:6597 次
发布时间:2019-06-24

本文共 1466 字,大约阅读时间需要 4 分钟。

引用:http://www.cnblogs.com/coco1s/p/5499469.html

防抖

简单来说,就是在resize或者scroll等操作特别频繁的时候,规定触发事件的频率,不要太频繁

  • 设定计时器,setTimeout(func, wait)
  • 如果在执行func之前,wait时间内就又有了新动作,则clearTimeout(timeout)清空计时器
  • 直到wait时间内没有新动作了,才执行func
// 简单的防抖动函数function debounce(func, wait, immediate) {    // 定时器变量    var timeout;    return function() {        // 每次触发 scroll handler 时先清除定时器        clearTimeout(timeout);        // 指定 xx ms 后触发真正想进行的操作 handler        timeout = setTimeout(func, wait);    };}; // 实际想绑定在 scroll 事件上的 handlerfunction realFunc(){    console.log("Success");} // 采用了防抖动window.addEventListener('scroll',debounce(realFunc,500));// 没采用防抖动window.addEventListener('scroll',realFunc);

 

节流

防抖方式只有当动作停下才会执行函数,但是如果遇到图片滑动时懒加载、Ajax请求之类,我们想要在滑动同时进行加载时,可以规定一个最小加载时间。就是虽然没有停下,但是一旦到了这个时间,就会进行一次加载。

// 简单的节流函数function throttle(func, wait, mustRun) {    var timeout,        startTime = new Date();     return function() {        var context = this,            args = arguments,            curTime = new Date();         clearTimeout(timeout);        // 如果达到了规定的触发时间间隔,触发 handler        if(curTime - startTime >= mustRun){            func.apply(context,args);            startTime = curTime;        // 没达到触发间隔,重新设定定时器        }else{            timeout = setTimeout(func, wait);        }    };};// 实际想绑定在 scroll 事件上的 handlerfunction realFunc(){    console.log("Success");}// 采用了节流函数window.addEventListener('scroll',throttle(realFunc,500,1000));

 

 

转载于:https://www.cnblogs.com/xiaoyuchen/p/10538435.html

你可能感兴趣的文章
Android性能优化之UI实战
查看>>
Facebook Docusaurus 中文文档 siteConfig.js 详解
查看>>
iMooc-张鑫旭 CSS
查看>>
后台管理系统相关
查看>>
使用eclipse搭建嵌入式开发环境
查看>>
ASP.NET Core的配置(3): 将配置绑定为对象[下篇]
查看>>
指静脉识别:一个“销声匿迹”了近二十年的多模态生物识别技术要“重出江湖”...
查看>>
小议阿里云"数加"平台对企业有何帮助?
查看>>
《C语言程序设计进阶教程》一2.3.2 函数实参
查看>>
智能硬件的未来发展:自主研发和AI将成为关键
查看>>
“聚光灯”下的数梦工场 首提“新型互联网”战略
查看>>
IBM预通过R语言扩展 简化Watson系统的应用
查看>>
施耐德电气推出EcoStruxure架构与平台,开启转型之路
查看>>
NVIDIA与阿里云达成战略合作 共同拓展深度学习市场
查看>>
数据中心机房对环境的新要求
查看>>
一个页面标题和过滤输出的解决方案(下)
查看>>
JSP连接access数据库
查看>>
Loadrunner监控服务器资源
查看>>
Pandas:按条件进行行选择
查看>>
spring boot 自定义规则访问获取内部或者外部静态资源图片
查看>>