JS模拟多线程

2019-04-04 07:59:16来源:爱站网 阅读 ()

新老客户大回馈,云服务器低至5折

我们都知道JS是基于一个线程,同时这也是浏览器的JS引擎,下面爱站技术频道小编将让我们看看使用浏览器中的线程有哪些,感兴趣的小伙伴们可以参考一下吧!

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模拟多线程,相信大家都有了一定的了解,如需了解更多的相关资讯,请继续关注爱站技术频道吧!


原文链接:https://js.aizhan.com/develop/JavaScript/5179.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:HTML页面调用ASP参数的方法

下一篇:js中事件冒泡,事件捕获详解