javascript性能优化之分时函数的介绍


Posted in Javascript onMarch 28, 2018

分时函数和函数节流的问题不一样,函数节流针对的事件不是用户主动调用的,前面已经提过了。

函数节流的原理是:延迟当前函数的执行,如果该次延迟还没有完成,那么忽略接下来该函数的请求。也就是说会忽略掉很多函数请求。

在一些开发场景中,我们可能会一次性向文档中注入上千个节点,在短时间内向浏览器中大量添加DOM节点可能会让浏览器吃不消,结果往往会让浏览器卡顿或吃不消,解决方案之一便是使用分时函数(timeChunk)。

timeChunk分时函数让创建节点的工作分批进行,比如一秒钟创建1000个节点,改为每个200ms创建10个节点。具体timeChunk函数封装如下:

function timeChunk( arr, fn, count){//arr 数组 fn操作函数 count每次操作数量
  var obj,
    t;
  var start = function(){
    var len = Math.min(count||1,arr.length);
    for(var i=0; i < len; i++){
      obj = arr.shift();
      fn(obj)
    }
  };
  return function(interval){
    t = setInterval(function(){
      if(arr.length==0){
        return clearInterval(t)
      };
      start();
    },interval||200)
  }
}

应用:

加入我们要在文档中添加1000个节点,可以利用timeChunk分时函数每200ms连续添加20个节点。

var arr = [];
for(var i = 1; i <= 1000; i++){
  arr.push(i)
}
var renderLists = timeChunk(arr,function(i){
  var div = document.createElement('div');
  div.innerHTML = i;
  document.body.appendChild(div);
},20);
renderLists(200);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
$.getJSON在IE下失效的原因分析及解决方法
Jun 16 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
Aug 18 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
原生javascript上传图片带进度条【实例分享】
Apr 06 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
Apr 25 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
vue-cli项目配置多环境的详细操作过程
Oct 30 Javascript
vue项目部署到nginx/tomcat服务器的实现
Aug 26 Javascript
Vue数据监听方法watch的使用
Mar 28 #Javascript
Vue 自定义动态组件实例详解
Mar 28 #Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 #Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 #Javascript
js中el表达式的使用和非空判断方法
Mar 28 #Javascript
JS实现左边列表移到到右边列表功能
Mar 28 #Javascript
JS中用EL表达式获取上下文参数值的方法
Mar 28 #Javascript
You might like
Banner程序
2006/10/09 PHP
php自动加载的两种实现方法
2010/06/21 PHP
php URL验证正则表达式
2011/07/19 PHP
PhpSpreadsheet设置单元格常用操作汇总
2020/11/13 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
JavaScript中Object.prototype.toString方法的原理
2016/02/24 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
Bootstrap CSS组件之大屏幕展播
2016/12/17 Javascript
loading动画特效小结
2017/01/22 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
vue+element UI实现树形表格
2020/12/29 Vue.js
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
Python的Flask框架中web表单的教程
2015/04/20 Python
Python实现的数据结构与算法之基本搜索详解
2015/04/22 Python
Python实现绘制双柱状图并显示数值功能示例
2018/06/23 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
病媒生物防治方案
2014/05/13 职场文书
给校长的一封检讨书
2014/09/20 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
2015国庆节宣传语
2015/07/14 职场文书
学习心理学心得体会
2016/01/22 职场文书