JavaScript高级函数应用之分时函数实例分析


Posted in Javascript onAugust 03, 2018

本文实例讲述了JavaScript高级函数应用之分时函数。分享给大家供大家参考,具体如下:

一、前提介绍:

某些函数是用户主动调用的,但因为一些客观的原因,这些函数会严重影响页面的性能。

二、应用场景:

在短时间内往页面中大量添加DOM节点显然会让浏览器吃不消,往往会导致浏览器的卡顿甚至假死。

三、解决方案:

以上述添加节点的例子来说明问题,我们将创建节点的工作分批进行,比如把1秒钟创建1000个节点,改为每隔200毫秒创建8个节点。

四、实现代码如下:

var timeChunk = function(ary, fn, count){
  var obj,t;
  var len = ary.length;
  var start = function(){
    for(var i=0;i<Math.min(count ||1, ary.length );i++){
      var obj = ary.shift();
      fn(obj);
    }
  };
  return function(){
    t = setInterval(function(){
      if(ary.length === 0){ //如果全部节点都已经被创建好
        return clearInterval(t);
      }
      start();
    }, 200); //分批执行的时间间隔,也可以用参数的形式传入
  };
};

五、调用验证方法

var ary = ['aa','bb','cc',.....];
var renderFriendList = timeChunk( ary, function(n){
  var div = document.createElement('div');
  div.innerHTML = n;
  document.body.appendChild(div);
},8);
renderFriendList();

更多关于JavaScript相关内容可查看本站专题:《JavaScript常用函数技巧汇总》、《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
JavaScript插件化开发教程 (三)
Jan 27 Javascript
使用js实现的简单拖拽效果
Mar 18 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
微信小程序 Tab页切换更新数据
Jan 05 Javascript
vue.js todolist实现代码
Oct 29 Javascript
vue项目上传Github预览的实现示例
Nov 06 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
vue开发移动端底部导航条功能
Apr 08 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 #Javascript
JavaScript中call和apply方法的区别实例分析
Aug 03 #Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
Aug 03 #Javascript
关于js对textarea换行符的处理方法浅析
Aug 03 #Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 #Javascript
使用JS代码实现俄罗斯方块游戏
Aug 03 #Javascript
小程序tab页无法传递参数的方法
Aug 03 #Javascript
You might like
PHP数组交集的优化代码分析
2011/03/06 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
基于vue实现圆形菜单栏组件
2019/07/05 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
python 实现音频叠加的示例
2020/10/29 Python
Python LMDB库的使用示例
2021/02/14 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
老教师工作总结的自我评价
2013/09/27 职场文书
人事助理岗位职责
2013/11/18 职场文书
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
村主任“四风”问题个人整改措施
2014/10/04 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
公司酒会致辞
2015/07/30 职场文书
幼儿园中班班级总结
2015/08/10 职场文书
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers