您的位置:首页 > Web前端 > JavaScript

javascript 多步处理,根据javascript高性能一书自己封装的 4000 一个多步处理函数对象

2011-11-23 13:26 543 查看
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上的改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息