JS中的陣列提供了四個操作,以便讓我們實現佇列與堆疊!
小理論:
佇列:先進先出
堆疊:後進先出
實現佇列的方法:
unshift: 在集合開頭新增一個或更多元素,並返回新的長度
push:在集合中新增元素,並返回新的長度
這是原來老趙寫的關於陣列佇列的程式碼,覺得有點問題,所以改了一下
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());現在我改成了
JS中的陣列提供了四個操作,以便讓我們實現佇列與堆疊!
小理論:
佇列:先進先出
堆疊:後進先出
實現佇列的方法:
unshift: 在集合開頭新增一個或更多元素,並返回新的長度
push:在集合中新增元素,並返回新的長度
這是原來老趙寫的關於陣列佇列的程式碼,覺得有點問題,所以改了一下
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());現在我改成了