首頁 >web前端 >js教程 >javascript性能優化之分時函數的介紹

javascript性能優化之分時函數的介紹

亚连
亚连原創
2018-05-28 15:40:191666瀏覽

本篇文章主要介紹了javascript性能優化之分時函數的介紹,現在分享給大家,也給大家做個參考。

分時函數和函數節流的問題不一樣,函數節流針對的事件不是用戶主動呼叫的,前面已經提過了。

函數節流的原理是:延遲目前函數的執行,如果該次延遲還沒有完成,那麼忽略接下來該函數的請求。也就是說會忽略掉很多函數請求。

在某些開發場景中,我們可能會一次向文件中註入上千個節點,在短時間內向瀏覽器中大量添加DOM節點可能會讓瀏覽器吃不消,結果往往會讓瀏覽器卡頓或吃不消,解決方案之一便是使用分時函數(timeChunk)。

timeChunk分時函數讓創建節點的工作分批進行,例如一秒鐘創建1000個節點,改為每個200ms創建10個節點。具體timeChunk函數封裝如下:

function timeChunk( arr, fn, count){//arr 数组 fn操作函数 count每次操作数量
  var obj,
    t;
  var start = function(){
    var len = Math.min(count||1,arr.length);
    for(var i=0; i < len; i++){
      obj = arr.shift();
      fn(obj)
    }
  };
  return function(interval){
    t = setInterval(function(){
      if(arr.length==0){
        return clearInterval(t)
      };
      start();
    },interval||200)
  }
}

應用程式:

#加入我們要在文件中加入1000個節點,可以利用timeChunk分時函數每200ms連續加入20個節點。

var arr = [];
for(var i = 1; i <= 1000; i++){
  arr.push(i)
}
var renderLists = timeChunk(arr,function(i){
  var p = document.createElement(&#39;p&#39;);
  p.innerHTML = i;
  document.body.appendChild(p);
},20);
renderLists(200);

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

ajax 傳回值自動加入pre標籤的解決方法

##ajax使用不同namespace的action的方法

用ajax實作預覽連結可以看到連結的內容

以上是javascript性能優化之分時函數的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn