JavaScript分时函数

有时候页面需要加载上千条数据时候,防止浏览器卡顿,APP加载太慢等情况我们可以使用分时函数来分段执行。

下例每200毫秒,查询50条数据

				var timeChunk = function( ary, fn, count ){ // 参数分别是:需处理的数据数组,处理数据的函数体,一次处理多少个 200毫秒执行50条数据
				    var obj, t;	//需要处理第一个			
				    var len = ary.length;				
				    var start = function(){
				        for ( var i = 0; i < Math.min( count || 1, ary.length ); i++ ){// 直到i被执行count个or执行完最后几个
				                // 每次拿第一个值值进行函数处理,.
				            var obj = ary.shift();

				            fn( obj );
				        }
				    };				
				     return function(){
				        t = setInterval(function(){
				          if ( ary.length === 0 ){  // 如果全部节点都已经被创建好
				              return clearInterval( t );
				          }
				          //批量执行函数
				          start();
				        }, 200 );    // 分批执行的时间间隔,也可以用参数的形式传入				
				    };				
				};
			var ary=[];
    			for (var i=1;i<=50;i++) {
    				var html = [];
    				
    				html.push('<ul class="mui-table-view mui-table-view-chevron">')
    				html.push('<li class="mui-table-view-cell mui-collapse">')
    				html.push('<a class="mui-navigate-right" style=background-color:#BFEFFF; >产品</a>');
    				html.push('<ul class="mui-table-view mui-table-view-chevron">')
    				html.push('<li class="mui-table-view-cell"><a class="mui-navigate-right mui-li" href="#">iOS</a></li>');
    				html.push('<li class="mui-table-view-cell"><a class="mui-navigate-right mui-li" href="#">Android</a></li>')
    				html.push('</ul>')
    				html.push('</li></ul>')
    				ary.push(html.join('')); //注意如果插入多个dom元素后,必须用一个数组包装
    			}	

			var item2 = document.getElementById('item2mobile');
    			var renderFriendList=timeChunk(ary ,function(n){
    		        var div = document.createElement( 'div' );
    		        div.innerHTML=n;
    		        item2.querySelector('.mui-scroll').appendChild(div);
    			},8)
调用
renderFriendList();




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值