一個(gè)簡(jiǎn)單的JavaScript異步處理事件隊(duì)列
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
當(dāng)我們需要連續(xù)執(zhí)行幾個(gè)函數(shù),而這幾個(gè)函數(shù)會(huì)一直對(duì)頁(yè)面元素進(jìn)行操作時(shí),很可能頁(yè)面會(huì)出現(xiàn)短暫的卡,然后,一下子爆炸性的出現(xiàn)所有信息。 一般我們會(huì)用setTimeout(fn,0);這種來(lái)執(zhí)行,其實(shí)js的setTimeout,特別是IE6的,響應(yīng)時(shí)間最快也要17毫秒左右,所以,設(shè)置成0,意義不大。 而且,這種做法,存在不連續(xù),不連貫性。所以,自己寫了個(gè)簡(jiǎn)單的。
1 /** 2 * @author floyd 3 * @name 異步處理事件隊(duì)列 4 * @example var qe = new QueneEnginer();qe.add(fn,context,arrParam);qe.start(); 5 */ 6 7 var QueneEnginer = function(){ 8 9 this.Quene = []; 10 } 11 QueneEnginer.prototype = { 12 processTime : 20, 13 /** 14 * 添加事件到隊(duì)列中 15 * @param {function} fn 函數(shù)對(duì)象 16 * @param {object} context 上下文對(duì)象 可為空 17 * @param {array} arrParam 參數(shù)數(shù)組 可為空 18 */ 19 add : function(fn,context,arrParam){ 20 21 this.Quene.push( 22 { 23 fn : fn, 24 context : context, 25 param : arrParam 26 } 27 ); 28 }, 29 start : function(){ 30 var that = this; 31 setTimeout(function(){that.process();},that.processTime); 32 }, 33 process : function(){ 34 35 var quene = this.Quene.shift(); 36 37 if(!quene)return ; 38 39 quene.fn.apply(quene.context,quene.param); 40 41 quene = null; 42 43 this.start(); 44 } 45 } 該文章在 2011/11/13 23:58:24 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |