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数组的使用
Mar 28 Javascript
JavaScript中window、doucment、body的解释
Aug 14 Javascript
Javascript简单实现可拖动的div
Oct 22 Javascript
浅析Node在构建超媒体API中的作用
Jul 30 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
JS数组array元素的添加和删除方法代码实例
Jun 01 Javascript
javascript运算符语法全面概述
Jul 14 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
Jul 24 Javascript
随机生成10个不重复的0-100的数字(实例讲解)
Aug 16 Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 Javascript
vue实现下载文件流完整前后端代码
Nov 17 Vue.js
Handtrack.js库实现实时监测手部运动(推荐)
Feb 08 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
Opcache导致php-fpm崩溃nginx返回502
2015/03/02 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
web的各种前端打印方法之jquery打印插件jqprint实现网页打印
2013/01/09 Javascript
JS 对输入框进行限制(常用的都有)
2013/07/30 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
Javascript日期格式化format函数的使用方法
2016/08/30 Javascript
微信小程序 加载 app-service.js 错误解决方法
2016/10/12 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
python实现拼图小游戏
2020/02/22 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
2020/06/12 Python
python中@contextmanager实例用法
2021/02/07 Python
CSS3颜色值RGBA与渐变色使用介绍
2020/03/06 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
跟单文员岗位职责
2014/01/03 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
机械个人求职信范文
2014/01/24 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
房屋授权委托书范本
2014/10/07 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
校长新学期致辞
2015/07/30 职场文书
接收函
2019/04/22 职场文书
关于EntityWrapper的in用法
2022/03/22 Java/Android