JS代码setTimeout优化
//创建任务控制类 var TaskControl = function(taskFunction, finishFunction){ this.finish = false; this.next = function(){ if( !this.finish ){ taskFunction.call(this); }else{ finishFunction.call(this); } }; }; //老规则,为了方便复制,TaskControl 再写一遍:结束 //任务 var task = function(){ this.index++; //判断列表中还有没有任务 if( this.index >= this.data.length ){ this.finish = true; //继续下一个,触发完成 this.next(); }else{ console.time("任务:" + this.index); //如果还有任务,开始处理任务 this.cache.push({ url : "?" + this.data[this.index], index : this.index, start : new Date() }); $.get(this.cache[this.index].url, (function(html){ this.cache[this.index].finish = new Date(); this.cache[this.index].htmlsize = html.length; console.log(this.cache[this.index]); console.timeEnd("任务:" + this.index); //继续下一个 this.next(); }).bind(this)); } }; var finish = function(){ console.log("任务完成"); console.table(this.cache); }; var run = new TaskControl(task, finish); //为了测试方便,将数据也绑定过来 run.data = ["1010000007271957", "1010000003115114", "1010000007271957"];//列表 run.index = -1; //默认索引 run.cache = []; //设置个执行缓存 run.next(); //开始执行
把任务放到run.data,会一个一个执行
本文链接:http://www.cncncc.com/article/view/article_17_840.html
1、所有文章未经授权禁止转载、摘编、复制或建立镜像,如有违反,追究法律责任。
2、本站文章部分来源注册用户发布或互联网收集而来,若有侵权,谬误,请邮件联系作者。
邮箱地址:7098952@qq.com