Edit in JSFiddle

function log(_n, n) {
    var str = _n + '-' + n + ',处理了' + (_n - n) + '个任务';
    $("#log").prepend('<li>' + str + '</li>');
}
//初始化数据,容量为10000的数组
var content = $('#content'),
    arr = [];
for (var i = 3000; i--;) {
    arr[i] = i;
}
//对单个obj进行耗时操作
var doAction = function (obj) {
    var cls = 'hehe';
    child = $('<li>').append(obj);
    content.prepend(child);
    for (var i = 100; i--;) child.addClass(cls).removeClass(cls);
}
/**以100毫秒为单位分批调用n次fun */
var bat = function bat(n, fun) {
    //无视浏览器性能差异的批处理
    var _n = n;
    var t = new Date,
        callee = arguments.callee;
    do {
        if (!n) { //退出任务条件
            log(_n, n);
            return;
        }
        fun(n--);
    } while (new Date - t < 100); //100ms休息一下
    log(_n, n);
    setTimeout(function () {
        callee(n, fun);
    }, 20); //这里是休息时间
}
$('#b1').click(function () {
    content.empty();
    $("#log").empty();
    //分批效果
    bat(arr.length, function (i) {
        doAction(arr[i]);
    });
});
$('#b2').click(function () {
    content.empty();
    $("#log").empty();
    //一次性干完
    for (var i = arr.length; i--;) {
        doAction(arr[i]);
    }
});
<button id="b1">分批处理</button>
<button id="b2">一次性搞完</button>
<ul id="content"></ul>
<ul id="log"></ul>
#content {
    float:left;
    width:100px;
}