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 相关文章推荐
javascript Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
匹配任意字符的正则表达式写法
Apr 29 Javascript
ExtJs grid行 右键菜单的两种方法
Jun 19 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
javascript的动态加载、缓存、更新以及复用(一)
Jun 09 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
JavaScript实现简单评论功能
Aug 17 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 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
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
Mootools 1.2教程 Fx.Tween的使用
2009/09/15 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
使用js如何实现全选与全不选
2013/12/30 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
python 控制语句
2011/11/03 Python
python二叉树的实现实例
2013/11/21 Python
Python yield 使用浅析
2015/05/28 Python
python实现拼图小游戏
2020/02/22 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
2020/10/26 Python
PyChon中关于Jekins的详细安装(推荐)
2020/12/28 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
学院书画协会部门岗位职责
2013/12/01 职场文书
新学期红领巾广播稿
2014/01/14 职场文书
个人承诺书
2014/03/26 职场文书
银行求职自荐信范文
2015/03/04 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
现实表现证明材料
2015/06/19 职场文书
公司档案管理制度
2015/08/05 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js