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 相关文章推荐
如何实现JS函数的重载
Sep 22 Javascript
JavaScript设置FieldSet展开与收缩
May 15 Javascript
再谈javascript原型继承
Nov 10 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
Dec 20 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
jquery实现二级导航下拉菜单效果
Dec 18 Javascript
喜大普奔!jQuery发布 3.0 最终版
Jun 12 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
Vue数据驱动模拟实现1
Jan 11 Javascript
BootStrap 导航条实例代码
May 18 Javascript
vue的基本用法与常见指令
Aug 15 Javascript
JavaScript 中的12种循环遍历方法【总结】
May 31 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简单浏览目录内容的实现代码
2013/06/07 PHP
经典PHP加密解密函数Authcode()修复版代码
2015/04/05 PHP
Laravel中错误与异常处理的用法示例
2018/09/16 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
编写针对IE的JS代码两种编写方法
2013/01/30 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
浅谈Javascript如何实现匀速运动
2014/12/19 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
微信小程序 request接口的封装实例代码
2017/04/26 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
使用python在校内发人人网状态(人人网看状态)
2014/02/19 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
python中virtualenvwrapper安装与使用
2018/05/20 Python
Python Collatz序列实现过程解析
2019/10/12 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
python FTP编程基础入门
2021/02/27 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
德国苹果商店:MacTrade
2020/05/18 全球购物
资产评估专业大学生求职信
2013/09/29 职场文书
经贸韩语专业大学生职业规划
2014/02/14 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
先进个人推荐材料
2014/12/29 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书