亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

淺談JS函數節流防抖

2024-05-06 16:40:22
字體:
來源:轉載
供稿:網友

在前端開發中有一部分的用戶行為會頻繁的觸發事件執行,而對于DOM操作、資源加載等耗費性能的處理,很可能導致界面卡頓,甚至瀏覽器的崩潰。函數節流(throttle)和函數防抖(debounce)就是為了解決類似需求應運而生的。

函數節流(throttle)

函數節流就是預定一個函數只有在大于等于執行周期時才執行,周期內調用不執行。好像水滴攢到一定重量才會落下一樣。

場景:

  • 窗口調整(resize)
  • 頁面滾動(scroll)
  • 搶購瘋狂點擊(mousedown)

實現:

function throttle(method, delay){  var last = 0;  return function (){    var now = +new Date();    if(now - last > delay){      method.apply(this,arguments);      last = now;    }  }}document.getElementById('throttle').onclick = throttle(function(){console.log('click')},2000);

underscore實現:

_.throttle = function(func, wait, options) {  var context, args, result;  var timeout = null;  var previous = 0;  if (!options) options = {};  var later = function() {    previous = options.leading === false ? 0 : _.now();    timeout = null;    result = func.apply(context, args);    if (!timeout) context = args = null;  };  return function() {    var now = _.now();    if (!previous && options.leading === false) previous = now;    //計算剩余時間    var remaining = wait - (now - previous);    context = this;    args = arguments;    //剩余時間小于等于0或者剩余時間大于等待時間(本地時間變動出現)    if (remaining <= 0 || remaining > wait) {      if (timeout) {        clearTimeout(timeout);        timeout = null;      }      previous = now;      result = func.apply(context, args);      if (!timeout) context = args = null;    } else if (!timeout && options.trailing !== false) {      timeout = setTimeout(later, remaining);    }    return result;  };};  

函數防抖(debounce)

函數防抖就是在函數需要頻繁觸發情況時,只有足夠空閑的時間,才執行一次。好像公交司機會等人都上車后才出站一樣。

場景:

  • 實時搜索(keyup)
  • 拖拽(mousemove)

實現:

function debounce(method, delay){  var timer = null;  return function(){    var context = this,args = arguments;    clearTimeout(timer);    timer = setTimeout(function(){      method.apply(context, args);    },delay);  }}document.getElementById('debounce').onclick = debounce(function(){console.log('click')},2000);

underscore實現:

_.debounce = function(func, wait, immediate) {  var timeout, args, context, timestamp, result;  var later = function() {    var last = _.now() - timestamp;    if (last < wait && last >= 0) {      timeout = setTimeout(later, wait - last);    } else {      timeout = null;      if (!immediate) {        result = func.apply(context, args);        if (!timeout) context = args = null;      }    }  };  return function() {    context = this;    args = arguments;    timestamp = _.now();    var callNow = immediate && !timeout;    if (!timeout) timeout = setTimeout(later, wait);    if (callNow) {      result = func.apply(context, args);      context = args = null;    }    return result;  };};  

函數節流(throttle)和函數防抖(debounce)都是通過延時邏輯操作來提升性能的方法,在前端優化中是常見且重要的解決方式。可以從概念和實際應用中理解兩者的區別,在需要的時候選擇合適的方法處理。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲影院高清在线| 久久亚洲综合国产精品99麻豆精品福利| 精品久久久一区| 91色在线视频| 国内精品国产三级国产在线专| 亚洲成avwww人| 欧美一级电影久久| 91久久综合亚洲鲁鲁五月天| 欧美丝袜美女中出在线| 国产精品福利在线观看网址| 亚洲毛片在线看| 青草青草久热精品视频在线观看| 91在线色戒在线| 日韩欧美中文字幕在线观看| 精品一区二区电影| 亚洲欧美激情一区| 国产精品91在线| 久久99久久久久久久噜噜| 日本亚洲欧美三级| 中文字幕在线看视频国产欧美| 日韩女优人人人人射在线视频| 91久久中文字幕| 一本一道久久a久久精品逆3p| 国产美女精品免费电影| 欧美午夜宅男影院在线观看| 亚洲天堂视频在线观看| 国产成人综合精品| 欧美成人高清视频| 亚洲成人a**站| 亚洲乱码国产乱码精品精| 欧美老女人性视频| 日韩av在线导航| 亚洲香蕉成视频在线观看| 中文字幕在线精品| 91九色国产在线| 国产欧美一区二区三区在线看| 韩国精品久久久999| 欧美激情视频免费观看| 国产专区精品视频| 国产成人精品久久亚洲高清不卡| 日韩精品中文字幕在线观看| 国产精品视频一区二区高潮| 91精品国产91久久久| 日韩毛片中文字幕| 国产日韩欧美视频在线| 久久精品国产欧美激情| 欧美性20hd另类| 欧美二区在线播放| 国产精品久久久久9999| 欧美俄罗斯乱妇| 久久中文久久字幕| 全亚洲最色的网站在线观看| 国产91在线高潮白浆在线观看| 久久成人精品电影| 亚洲一区国产精品| 日韩二区三区在线| 亚洲天堂视频在线观看| 亚洲精品videossex少妇| 亚洲www视频| 欧美老女人性视频| 国产精品麻豆va在线播放| 成人免费视频在线观看超级碰| 国产在线视频2019最新视频| 亚洲国产第一页| 久久精品视频一| 色综合五月天导航| 精品久久久久久久久国产字幕| 亚洲欧美中文字幕在线一区| 91黑丝高跟在线| 国产一区二区三区免费视频| 亚洲视频axxx| 尤物九九久久国产精品的特点| 91在线直播亚洲| 欧美xxxx做受欧美.88| 亚洲精品自拍偷拍| 国产欧美一区二区三区视频| 欧美华人在线视频| 欧美综合一区第一页| 国产精品欧美亚洲777777| 久久久久久久激情视频| 国产精品美女主播在线观看纯欲| 欧美色视频日本高清在线观看| 亚洲国产精品小视频| 日韩精品一区二区三区第95| 欧洲亚洲免费在线| 97国产精品视频| 日韩av影视综合网| 日本韩国欧美精品大片卡二| 日韩av在线网址| 国产精品久久久久久久午夜| 欧美午夜片在线免费观看| 欧美成人精品激情在线观看| 亚洲国产成人爱av在线播放| 亚洲国产高潮在线观看| 成人免费黄色网| 久久99亚洲热视| 亚洲毛茸茸少妇高潮呻吟| 国产亚洲一区精品| 亚洲成**性毛茸茸| 91精品久久久久久久久久| 日韩一区二区福利| 久久久久成人网| 日韩电影免费在线观看| 91免费高清视频| 久久久久久香蕉网| 国产精品爱久久久久久久| 日韩网站在线观看| 久久久国产精品免费| 久久久久久久久久久久av| 国产视频久久久久| 最新91在线视频| 欧美日韩不卡合集视频| 97国产精品免费视频| 国产精品久久久久久久久久99| 国产精品精品国产| 国产精品88a∨| 亚洲精品美女网站| 亚洲最新视频在线| 欧美午夜电影在线| 欧美成人高清视频| 精品久久久精品| 欧美成人高清视频| 久久影视电视剧免费网站清宫辞电视| 国产精品日韩欧美综合| 一区二区欧美亚洲| 亚洲欧美日本伦理| 欧美巨乳美女视频| 国产精品视频不卡| 亚洲乱亚洲乱妇无码| 青草青草久热精品视频在线观看| 日韩欧中文字幕| 久久97久久97精品免视看| 国产精品久久9| 日韩综合视频在线观看| 黄色一区二区三区| 国产69久久精品成人| 欧美成人精品在线观看| 在线观看国产精品日韩av| 亚洲天堂av综合网| 国产一级揄自揄精品视频| 精品久久久久久中文字幕一区奶水| 中文字幕av一区二区| 欧美日韩一区二区在线播放| 色综合色综合网色综合| 日本三级韩国三级久久| 亚洲韩国日本中文字幕| 国内久久久精品| 亚洲成人国产精品| 九九热这里只有精品免费看| 国产美女精品视频免费观看| 成人黄色大片在线免费观看| 久久久91精品国产| 亚洲精品国产精品久久清纯直播| 久久久久久久成人| 91精品久久久久久综合乱菊| 亚洲欧洲国产一区| 一本大道亚洲视频| 日韩一区二区三区xxxx| 亚洲免费av片| 日韩免费看的电影电视剧大全| 欧洲成人免费视频| 久久久精品在线| 最新国产精品拍自在线播放| 亚洲人成网站777色婷婷|