我們都知道JS是基于一個線程,同時這也是瀏覽器的JS引擎,下面錯新技術頻道小編將讓我們看看使用瀏覽器中的線程有哪些,感興趣的小伙伴們可以參考一下吧!
<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>
通過錯新技術頻道小編介紹的JS模擬多線程,相信大家都有了一定的了解,如需了解更多的相關資訊,請繼續關注錯新技術頻道吧!
新聞熱點
疑難解答
圖片精選