var multiStep = {};
multiStep.addStep = function(step,scope,args){
this.steps = this.steps || [];
args = args || [];scope = scope || window;
var tmpObj = [step,scope,args];
this.steps.push(tmpObj);
};
multiStep.run = function(interval,callback){
var time = !!interval&&interval>25 ? interval:25;
var steps = this.steps;
setTimeout(function(){
var step = steps.shift();
if(!!step){
var func = step[0];
var scope = step[1];
var args = step[2];
if(!!func && typeof func === "function"){
func.apply(scope,args);
}
}
if(steps.length>0){
setTimeout(arguments.callee,time);
}else{
if(!!callback){
callback();
}
}
},interval);
};
使用
function a (){
alert("a");
};
function b (b){
alert("b " + b);
};
function c (c,d){
alert("c " + c + " " + d);
};
function d (d){
alert("d");
};
multiStep.addStep(a,this);
multiStep.addStep(b,this,[100]);
multiStep.addStep(c,this,["OK","yes"]);
multiStep.addStep(d,this,["no"]);
multiStep.run(100);
如此调用的话,就会每隔100秒后向javascrip处理队列加入一个函数去执行,每个函数之间就有100毫秒的空余时间来让UI线程得到空闲,让UI线程得到释放去处理一下UI上的改变。