zoukankan      html  css  js  c++  java
  • javascript 分时函数 分批次添加DOM节点 timeChunk

    创建1000个webqq的qq好友列表, 一个好友用一个节点来表示

    * timeChunk

    var timeChunk = function(a, fn, sz, done) {
        var obj, t, len = a.length;
        var start = function() {
            for (var i = 0; i < Math.min(sz || 1, a.length); i++) {
                var obj = a.shift();
                fn.call(this, obj);
            }
        }
        return function() {
            t = setInterval(function() {
                // 如果全部节点都已经被创建好
                if (a.length === 0) {
                	var i = clearInterval(t)
                   	typeof done === "function" && done.call(this);
                   	return i;
                }
                start();
            }, 200);
        }
    }
    
    /**
     * Pad a string to a certain length with another string
     */
    function str_pad(input, pad_length, pad_string) {
        var i = String.valueOf()(input);
        var n = pad_length - i.length;
        if (n <= 0)
            return i;
        var s = pad_string || "0";
        while (n--) {
            i = s + i;
        }
        return i;
    }
    
    // test
    var ary = [];
    for (var i = 1; i <= 1000; i++) {
        ary.push(i);
    }
    
    // 每次加载8个
    var renderFriendsList = timeChunk(ary, function(n) {
        var div = document.createElement("div");
        div.innerHTML = "Friend-" + str_pad(n, 4);
        document.body.appendChild(div);
    }, 8, function() {
    	var hint = document.createElement("p");
        hint.innerHTML = "好友列表加载完了";
        document.body.insertBefore(hint, document.body.querySelector("script"));
    });
    
    renderFriendsList();
    

      

      

    Run:

  • 相关阅读:
    七、文件的排序、合并和分割
    六、awk编程
    五、sed命令
    四、grep命令
    三、正则表达式
    二、Linux文件系统和文本编辑器
    一、shell基础知识点
    mysql实现交易编码生成(代替oracle的序列)
    新安装Centos无法访问网络
    uiview 动画
  • 原文地址:https://www.cnblogs.com/mingzhanghui/p/9408465.html
Copyright © 2011-2022 走看看