在前面關於函式節流的討論中,我們提供了一種限制函式被頻繁呼叫的解決方案。下面我們將遇到另外乙個問題,某些函式確實是使用者主動呼叫的,但因為一些客觀的原因,這些函式會嚴重地影響頁面效能。
乙個例子是建立 webqq 的 qq 好友列表。列表中通常會有成百上千個好友,如果乙個好友用乙個節點來表示,當我們在頁面中渲染這個列表的時候,可能要一次性往頁面中建立成百上千個節點。
在短時間內往頁面中大量新增 dom 節點顯然也會讓瀏覽器吃不消,我們看到的結果往往就是瀏覽器的卡頓甚至假死。**如下:
var ary =
;for
(var i =
1; i <=
1000
; i++);
varrenderfriendlist
=function
( data )};
renderfriendlist
( ary )
;
這個問題的解決方案之一是下面的 timechunk 函式,timechunk 函式讓建立節點的工作分批進行,比如把 1 秒鐘建立 1000 個節點,改為每隔 200 毫秒建立 8 個節點。
timechunk 函式接受 3 個引數,第 1 個引數是建立節點時需要用到的資料,第 2 個引數是封裝了建立節點邏輯的函式,第 3 個引數表示每一批建立的節點數量。**如下:
var timechunk = function( ary, fn, count )
}; return function()
start();
}, 200 ); // 分批執行的時間間隔,也可以用引數的形式傳入
};};
最後我們進行一些小測試,假設我們有 1000 個好友的資料,我們利用 timechunk 函式,每一批只往頁面中建立 8 個節點:
var ary =
;for
(var i =
1; i <=
1000
; i++);
var renderfriendlist =
timechunk
( ary,
function
( n ),8
);renderfriendlist()
;
python 函式4(遞迴 高階函式)
python 函式4 遞迴 高階函式 遞迴 在函式內部,可以呼叫其他函式。如果乙個函式在內部呼叫自身本身,這個函式就是遞迴函式。遞迴特性 1.遞迴必須有乙個明確的結束條件 2.每次進入更深一層遞迴時,問題規模相比上次遞迴都應有所減少 3.遞迴效率不高,遞迴層次過多會導致棧溢位 在計算機中,函式呼叫是...
高階函式的應用
高階函式 函式引數如果是函式,或者這個函式返回乙個新的函式 aop 面相切面程式設計 主要作用是把一些跟核心業務邏輯模組無關的功能抽離出來。例如 日誌統計,異常處理等。把這些功能抽離出來後,通過 動態植入 的方法,摻入到業務邏輯模組中。這樣做的好處是保證業務邏輯模組的純淨和高內聚,其次可以方便的復用...
作業 4 函式應用
1 輸入2個正整數m和n 1 m,n 1000 輸出m n之間的所有水仙花數。水仙花數是指各位數字的立方和等於其自身的數。要求定義並呼叫函式is number 判斷number的各位數字之和是否等於其自身。輸出m n之間的所有水仙花數 include intis int number 自定義 is ...