JS中的數組提供了四個操作,以便讓我們實現隊列與堆棧!
小理論:
隊列:先進先出
堆棧:后進先出
實現隊列的方法:
shift:從集合中把第一個元素刪除,並返回這個元素的值。
unshift: 在集合開頭添加一個或更多元素,並返回新的長度
push:在集合中添加元素,並返回新的長度
pop:從集合中把最后一個元素刪除,並返回這個元素的值。
這是原來老趙寫的關於數組隊列的代碼,覺得有點問題,所以改了一下
1 // Usage:裝載並運行函數 2 // 隊列機制 3 var Resource = (function () { 4 var waitingCallbacks = []; 5 var execute = function (cb) { 6 setTimeout(function () { 7 cb(function () { 8 if (waitingCallbacks.length == 0) return; 9 execute(waitingCallbacks.shift()); 10 }); 11 }, 0); 12 }; 13 var register = function (cb) { 14 if (waitingCallbacks.length == 0) { 15 execute(cb); 16 } else { 17 waitingCallbacks.push(cb); 18 } 19 } 20 return { 21 register: register, 22 state: 1 23 } 24 })();
原來代碼中是 execute(waitingCallbacks.unshift());現在我改成了 execute(waitingCallbacks.shift());當你從集合中執行了函數后,它應該從集合中刪除,而不是再添加,呵呵。