JavaScript分时函数

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:27   1159   0

有时候页面需要加载上千条数据时候,防止浏览器卡顿,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();




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP