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);
};
使用
如此调用的话,就会每隔100秒后向javascrip处理队列加入一个函数去执行,每个函数之间就有100毫秒的空余时间来让UI线程得到空闲,让UI线程得到释放去处理一下UI上的改变。
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上的改变。
相关文章推荐
- JavaScript之下雨效果制作--自己封装实例化对象结合canvas
- JavaScript 错误处理和函数对象
- 自己封装的javascript事件队列函数版
- Ajax实战总结——用原生JavaScript代码封装自己的Ajax核心对象
- javascript 面向对象基础(一)对象组成及函数封装
- JavaScript跨浏览器处理事件方法(封装成对象)
- 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求
- 自己封装的Socket组件,实现服务端多进程共享Socket对象,协同处理客户端请求
- javascript的函数、创建对象、封装、属性和方法、继承
- ajax传回的json对象要用javascript中的eval()函数处理的原因
- javascript的函数、创建对象、封装、属性和方法、继承
- Javascript 面相对象与函数处理的疑惑
- 追逐自己的梦想----------辅助制作第三十四课:向仓库存入N个物品对象函数封装实现
- 用 JavaScript 写 ASP,似乎很爽啊,自己封装了一个 操作数据库 分页 以及 文件操作的函数
- 自己封装的javascript事件队列函数版
- javascript的函数、创建对象、封装、属性和方法、继承
- javascript的函数、创建对象、封装、属性和方法、继承
- Jquery作者John Resig自己封装的javascript 常用函数
- javascript 日期Date对象处理函数