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

来源:互联网 发布:淘宝市场行情 编辑:程序博客网 时间:2024/06/07 03:51

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




原创粉丝点击