最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript性能優(yōu)化之分時函數(shù)的介紹

 更新時間:2018年03月28日 14:17:42   作者:KaRaoXake  
本篇文章主要介紹了javascript性能優(yōu)化之分時函數(shù)的介紹,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

分時函數(shù)和函數(shù)節(jié)流的問題不一樣,函數(shù)節(jié)流針對的事件不是用戶主動調(diào)用的,前面已經(jīng)提過了。

函數(shù)節(jié)流的原理是:延遲當(dāng)前函數(shù)的執(zhí)行,如果該次延遲還沒有完成,那么忽略接下來該函數(shù)的請求。也就是說會忽略掉很多函數(shù)請求。

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

timeChunk分時函數(shù)讓創(chuàng)建節(jié)點的工作分批進行,比如一秒鐘創(chuàng)建1000個節(jié)點,改為每個200ms創(chuàng)建10個節(jié)點。具體timeChunk函數(shù)封裝如下:

function timeChunk( arr, fn, count){//arr 數(shù)組 fn操作函數(shù) count每次操作數(shù)量
  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)
  }
}

應(yīng)用:

加入我們要在文檔中添加1000個節(jié)點,可以利用timeChunk分時函數(shù)每200ms連續(xù)添加20個節(jié)點。

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

永城市| 屏山县| 浙江省| 稻城县| 望谟县| 天长市| 清流县| 吴堡县| 南川市| 衡水市| 常州市| 陈巴尔虎旗| 四子王旗| 金寨县| 西城区| 四会市| 富民县| 张家口市| 东至县| 南丹县| 淅川县| 武穴市| 安阳市| 和平县| 深圳市| 无棣县| 通州市| 沛县| 米泉市| 和田县| 荆门市| 阿拉善盟| 屏东县| 米易县| 武夷山市| 永新县| 宝清县| 阿克陶县| 辽宁省| 惠东县| 达日县|