国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

js防抖函數和節流函數使用場景和實現區別示例分析

瀏覽:111日期:2024-05-13 09:21:20

本文實例講述了js防抖函數和節流函數使用場景和實現區別。分享給大家供大家參考,具體如下:

開發過程中,都遇到過某個事件被頻發觸發的場景,比如resize,scroll事件,input事件,而對應的事件處理函數也會被高頻率調用,這時會增加瀏覽器負擔,用戶體驗也不好,這也是防抖函數和節流函數存在的意義和使用場景。

函數防抖(debounce):

持續觸發事件時,在設定時間段內沒有被觸發,才去調用事件處理函數,在設定時間段內如果事件又被觸發,則不調用事件處理函數,并從觸發事件時間重新開始延時。

具體實現:

設計思路:在setTimeout中調用事件處理函數,如果在定時器觸發函數執行之前又觸發函數,清除定時器。

function debounce(fn, timeout){ timeout = timeout || 1000; let timer; return () => { if(timer){ clearTimeout(timer)} timer = setTimeout(() => { fn() },timeout) }} function printEvent(){ console.log(’1121212’)} window.addEventListener(’scroll’,debounce(printEvent,1000),false)

節流函數(throttle) throttle [’θrɑt(ə)l] 油門;節氣門;扼殺

當事件被持續觸發時,在設定時間內只讓事件處理函數觸發一次。

定時器實現模式:定時器在延時時間執行過后,重置為null, 定時器為null時,重新設置定時器,如此循環

//節流函數function throttle(fn, range){ range = range || 1000; let timer; return () => { //console.log(111,typeof timer) if(!timer){ timer = setTimeout( () => {fn()timer = null },range) } }} window.addEventListener(’mousemove’,throttle(printEvent,1000),false)

時間戳實現模式:初始化時獲取時間,每次觸發事件時再次獲取時間,兩次時間間隔等于或大于設定時間,執行事件,初始化時間重置為當前時間,如此循環。

//節流函數 時間戳模式var throttle2 = function(func, delay) {var prev = Date.now();return function() {var context = this;var args = arguments;var now = Date.now();if (now - prev >= delay) {func.apply(context, args);prev = Date.now();}}}

也可以使用時間戳加定時器結合實現:

總結:

函數防抖:在無事件觸發后的設定時間執行事件,將幾次操作合并為一此操作進行。這樣一來,只有最后一次操作能被觸發。

函數節流:使得一定時間內只觸發一次函數。原理是通過判斷是否到達一定時間來觸發函數。

區別: 函數節流不管事件觸發有多頻繁,都會保證在規定時間內一定會執行一次真正的事件處理函數,而函數防抖只是在最后一次事件后才觸發一次函數。

比如在頁面的無限加載場景下,我們需要用戶在滾動頁面時,每隔一段時間發一次 Ajax 請求,而不是在用戶停下滾動頁面操作時才去請求數據。這樣的場景,就適合用節流技術來實現。

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容可查看本站專題:《JavaScript常用函數技巧匯總》、《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 91成人免费观看网站 | 国产一级特黄aa级特黄裸毛片 | 亚洲成av人影片在线观看 | 亚洲一区二区三区四区五区六区 | 免费成人高清视频 | 特黄特色三级在线观看 | 日韩欧美在线观看 | 久久精品国产线看观看亚洲 | 色综合a怡红院怡红院首页 色综合精品久久久久久久 色综合九九 | 欧美久久久久欧美一区 | 国产亚洲自在精品久久 | 久久手机在线视频 | 亚洲人成在线观看 | 一级欧美| 日韩欧美亚州 | 国内欧美一区二区三区 | 国产二区三区毛片 | 亚洲情乱 | 美国毛片免费看 | 国产区精品一区二区不卡中文 | 在线免费观看亚洲视频 | 亚洲视频一区在线观看 | 日韩视频网 | 成人午夜大片免费看爽爽爽 | 一级大黄美女免费播放 | 99国产精品久久久久久久成人热 | 99re热精品这里精品 | 日韩欧美一级毛片视频免费 | 久久久精品国产免费观看同学 | 在线观看的黄网 | 综合欧美视频一区二区三区 | 一级a性色生活片久久毛片 一级a做爰片欧欧美毛片4 | 日本成人在线视频网站 | 欧美日韩一级黄色片 | 美女白浆视频 | 亚洲第一区香蕉_国产a | 成人三级做爰在线观看男女 | 深夜福利视频网站 | 亚洲偷自拍另类图片二区 | 久久在线视频免费观看 | 精品国产欧美一区二区 |