一個簡單的JavaScript異步處理事件隊列
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
當我們需要連續(xù)執(zhí)行幾個函數(shù),而這幾個函數(shù)會一直對頁面元素進行操作時,很可能頁面會出現(xiàn)短暫的卡,然后,一下子爆炸性的出現(xiàn)所有信息。 一般我們會用setTimeout(fn,0);這種來執(zhí)行,其實js的setTimeout,特別是IE6的,響應時間最快也要17毫秒左右,所以,設置成0,意義不大。 而且,這種做法,存在不連續(xù),不連貫性。所以,自己寫了個簡單的。
1 /** 2 * @author floyd 3 * @name 異步處理事件隊列 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 * 添加事件到隊列中 15 * @param {function} fn 函數(shù)對象 16 * @param {object} context 上下文對象 可為空 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 編輯過 |
關鍵字查詢
相關文章
正在查詢... |