JS模拟多线程
2019-04-04 07:59:16来源:爱站网 阅读 ()
我们都知道JS是基于一个线程,同时这也是浏览器的JS引擎,下面爱站技术频道小编将让我们看看使用浏览器中的线程有哪些,感兴趣的小伙伴们可以参考一下吧!
?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中事件冒泡,事件捕获详解
- js防止表单重复提交实现代码 2020-03-29
- js中去掉字串左右空格 2020-03-20
- NiftyCube实现圆角边框的方法 2020-03-20
- 如何用算法删除重复数据 2020-03-18
- js的验证表单 2020-03-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash