JS模拟多线程


Posted in Javascript onFebruary 07, 2007
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 相关文章推荐
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
Jan 17 Javascript
原生js页面滚动延迟加载图片
Dec 20 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
Apr 29 Javascript
基于JS实现数字+字母+中文的混合排序方法
Jun 06 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
May 18 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
Jun 11 Javascript
实例讲解React 组件
Jul 07 Javascript
如何在Vue.JS中使用图标组件
Aug 04 Javascript
JS性能优化实现方法及优点进行
Aug 30 Javascript
使用prototype.js进行异步操作
Feb 07 #Javascript
最新优化收藏到网摘代码(digg,diigo)
Feb 07 #Javascript
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 #Javascript
js滚动条多种样式,推荐
Feb 05 #Javascript
如何在标题栏显示框架内页面的标题
Feb 03 #Javascript
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
Feb 03 #Javascript
使用JS操作页面表格,元素的一些技巧
Feb 02 #Javascript
You might like
德生PL660的电路分析和打磨
2021/03/02 无线电
大家须知简单的php性能优化注意点
2016/01/04 PHP
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
2013/10/17 Javascript
JavaScript中使用Substring删除字符串最后一个字符
2013/11/03 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
利用python循环创建多个文件的方法
2018/10/25 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Django的CVB实例详解
2020/02/10 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python中数据库like模糊查询方式
2020/03/02 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
html5简介及新增功能介绍
2020/05/18 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
初中数学教学反思
2014/01/16 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
2015年市场部工作总结
2015/04/30 职场文书
MySQL创建表操作命令分享
2022/03/25 MySQL