手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JS模拟多线程
JS模拟多线程
摘要: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>

【JS模拟多线程】相关文章:

浅谈JavaScript中的Math.atan()方法的使用

JavaScript中fixed()方法的使用简介

JavaScript中的anchor()方法使用详解

总结一些js自定义的函数

理解javascript定时器中的单线程

JavaScript中Number.MAX_VALUE属性的使用方法

JS实现模拟风力的雪花飘落效果

自动关闭的层

仿DVBBS下拉菜单效果 jb51修正无错

显示、隐藏密码

精品推荐
分类导航