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

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上的改变。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值