function processArray(items,process,callback){
    var todo = items.concat();
    setTimeout(function(){
       process(todo.shift());
       if(todo.length > 0){
         setTimeout(arguments.callee,25);
       } else {
         callback(items); 
       }
    },25);
}
var items = [1,2,3];
function output(value){
  console.log(value);
}
processArray(items,outputValue,function(){
  console.log(‘finished output!‘)
});
function multistep(steps,args,callback){
    var tasks = steps.concat();
    setTimeout(function(){
       var task = tasks.shift();
       task.apply(null,args||[]);
       if(tasks.length > 0){
         setTimeout(arguments.callee,25);
       } else {
         callback(); 
       }
    },25);
}
function saveDocument(id){
  var tasks = [open,write,close];
  multistep(tasks,[id],function(){
  console.log(‘finished!‘);
 })
}
function timeProcessArray(items,process,callback){
    var todo = items.concat();
    setTimeout(function(){
       var start = +new Date();
       do{
         process(todo.shift());
       }while(todo.length > 0 &&(+new Date() - start < 50)) ;
       if(todo.length > 0){
         setTimeout(arguments.callee,25);
       } else {
         callback(items); 
       }
    },25);
}
注意,定时器虽然可以提高性能,但是过度使用会适得其反。需要控制web应用中的使用数量。
原文:http://www.cnblogs.com/LuckyWinty/p/6389149.html