JS模擬多線程
runNum : 0, //當(dāng)前正式運行的線程數(shù)
maxNum : 10, //最大同時執(zhí)行的線程數(shù) -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, //當(dāng)前正式運行的線程數(shù)
maxNum : 5, //最大同時執(zhí)行的線程數(shù) -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模擬的Map類實現(xiàn)方法
- js模擬點擊事件實現(xiàn)代碼
- js模擬滾動條(橫向豎向)
- js模擬點擊以提交表單為例兼容主流瀏覽器
- javascript用DIV模擬彈出窗口_窗體滾動跟隨
- javascript模擬滾動條實現(xiàn)代碼
- JS組件Bootstrap實現(xiàn)下拉菜單效果代碼
- 基于AngularJs + Bootstrap + AngularStrap相結(jié)合實現(xiàn)省市區(qū)聯(lián)動代碼
- JS組件Bootstrap Table使用實例分享
- 三級下拉菜單的js實現(xiàn)代碼
- JS實多級聯(lián)動下拉菜單類,簡單實現(xiàn)省市區(qū)聯(lián)動菜單!
- Js點擊彈出下拉菜單效果實例
- JS模擬bootstrap下拉菜單效果實例
相關(guān)文章
JS實現(xiàn)屏蔽網(wǎng)頁右鍵復(fù)制及ctrl+c復(fù)制的方法【2種方法】
這篇文章主要介紹了JS實現(xiàn)屏蔽網(wǎng)頁右鍵復(fù)制及ctrl+c復(fù)制的方法,結(jié)合實例形式分析了2種比較常用的屏蔽復(fù)制功能的技巧,需要的朋友可以參考下2016-09-09javascript設(shè)計模式 – 觀察者模式原理與用法實例分析
這篇文章主要介紹了javascript設(shè)計模式 – 觀察者模式,結(jié)合實例形式分析了javascript觀察者模式相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04JavaScript JSON.stringify()的使用總結(jié)
JSON是一種輕量級數(shù)據(jù)格式,可以方便地表示復(fù)雜數(shù)據(jù)結(jié)構(gòu)。JSON對象有兩個方法:stringify()和parse()。在簡單的情況下,這兩個方法分別可以將JavaScript序列化為JSON字符串,以及將JSON解析為原生JavaScript值。本文著重介紹JSON.stringify()的使用方法和注意事項。2021-05-05簡單js代碼實現(xiàn)selece二級聯(lián)動(推薦)
這篇文章主要介紹了簡單js代碼實現(xiàn)selece二級聯(lián)動的簡單實例。需要的朋友可以過來參考下,希望對大家有所幫助2014-02-02JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧詳解
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作的特殊線性表,也成稱為先進(jìn)后出表,下面這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之棧的相關(guān)資料,需要的朋友可以參考下2022-06-06UniApp中Scroll-View設(shè)置占滿下方剩余高度的方法記錄
在使用uniapp開發(fā)項目過程中有時候會想讓一些組件占有屏幕剩余的高度,下面這篇文章主要給大家介紹了關(guān)于UniApp中Scroll-View設(shè)置占滿下方剩余高度的方法,需要的朋友可以參考下2023-04-04js判斷復(fù)選框是否選中及選中個數(shù)的實現(xiàn)代碼
下面小編就為大家?guī)硪黄猨s判斷復(fù)選框是否選中及選中個數(shù)的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05