高阶函数 - 分时函数

        /**
         * 分时函数
         * @param  {[Array]}   ary   [数据]
         * @param  {Function} fn    [根据数组中的每个数据执行一个fn]
         * @param  {[type]}   count [每200ms执行一次start方法,start方法执行count次fn方法]
         */
        var timeChunk = function(ary, fn, count) {
            var obj, t;

            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);
                    } else {
                        start();
                    };
                }, 200);
            };
        };


        // test
        
        var ary = [];
        for (var i = 1; i <= 1000; i++) {
            ary.push(i);
        };

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

 

posted @ 2017-07-11 16:49  Sorrow.X  阅读(260)  评论(0编辑  收藏  举报