var Thread = { runNum : 0, //当前正式运行的线程数 maxNum : 10, //最大同时执行的线程数 -1表示不限 commandList : new Array(), start : function(){ //window.status = this.runNum; if(this.maxNum != -1 && this.runNum >= this.maxNum){ return; } if(this.commandList.length <= 0){ this.runNum = 0; return false; } this.runNum++; var _this =this; var tFun = function(){ if(!_this.commandList[0]) return; var command = _this.commandList[0].shift(); command.apply(_this,_this.commandList[0].concat( function(){ //alert(2) if(_this.runNum > 0)_this.runNum--; setTimeout(function(){_this.start.apply(_this)},1); })); _this.commandList.shift(); } setTimeout(tFun,1); setTimeout(function(){_this.start.apply(_this)},10); }}
<script src="prototype.js"></script><script type="text/javascript" defer="defer">function test(obj,info,callback){ callback = callback || new Function(); new Ajax.Request('test.xml',{method:'get', onSuccess:function(o){ $(obj).innerHTML += info + '完成<br>'; callback('完成'); }, onFailure : function(o){ $(obj).innerHTML += info + '失败<br>'; callback('失败'); }, onComplete : function(o){ document.body.scrollTop = 9999; } });}
var Thread = { runNum : 0, //当前正式运行的线程数 maxNum : 5, //最大同时执行的线程数 -1表示不限 commandList : new Array(), start : function(){ //window.status = this.runNum; if(this.maxNum != -1 && this.runNum >= this.maxNum){ return; } if(this.commandList.length <= 0){ this.runNum = 0; return false; } this.runNum++; var _this =this; var tFun = function(){ if(!_this.commandList[0]) return; var command = _this.commandList[0].shift(); command.apply(_this,_this.commandList[0].concat( function(){ //alert(2) if(_this.runNum > 0)_this.runNum--; setTimeout(function(){_this.start.apply(_this)},1); })); _this.commandList.shift(); } setTimeout(tFun,1); setTimeout(function(){_this.start.apply(_this)},10); }}
for(var i = 0; i < 100 ; i++){ Thread.commandList.push(new Array(test,document.body,i+1));};Thread.start();</script><body></body>
推荐阅读
javascript如何判断数组内元素是否重复的方法集锦
var str = new Array(); 比如有这么一组数组,里面放了20个18位的身份证号码 要判断里面的身份证号码是否有重复 如何快速判断?复制代码 代码如下:var ary = new Array("111","22","33","111"); var s =>>>详细阅读
本文标题:JS模拟多线程
地址:http://www.17bianji.com/kaifa2/JS/30943.html
1/2 1