JS模拟多线程_Javascript教程-查字典教程网
JS模拟多线程
JS模拟多线程
发布时间:2016-12-30 来源:查字典编辑
摘要:varThread={runNum:0,//当前正式运行的线程数maxNum:10,//最大同时执行的线程数-1表示不限commandLis...

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教程学习
    热门Javascript教程学习
    编程开发子分类