99久久精品国产片-99久久精品国产免费-99久久精品国产麻豆-99久久精品国产国产毛片-99久久精品国产高清一区二区-99久久精品费精品国产一区二区

JavaScript防抖與節流,深入淺出,一本正經講透徹

2021-9-29    前端達人

目錄

一、函數防抖(debounce)

1. 什么是防抖?

二.、函數節流

2.1 定時器實現

2.2 時間戳實現

2.3 時間戳+定時器

最后 


一、函數防抖(debounce)

1. 什么是防抖?

函數防抖在頻繁觸發某一個事件時,一段時間內不再觸發該事件后才會去調用對應的回調函數,在設定間隔時間內如果下一次事件被觸發, 那么就重新開始定時器,直到事件觸發結束。

規定時間內沒有繼續觸發事件的前提下,再去調用事件處理函數;

具體如下面的例子所示:


  1. /*定義防抖函數
  2. * func:傳入一個函數,事件不再持續觸發時會調用該函數
  3. * delay:定義持續多久后執行傳入的回調函數
  4. * */
  5. function debounce(func,delay) {
  6. let timer = null // 用于保存定時器
  7. return function (...args) {
  8. // 如果定時器存在,清除定時器,隨后重新設置timer
  9. if(timer !== null) clearTimeout(timer)
  10. timer = setTimeout(func, delay) // 超過delay為接收到事件會調用這里的func 必要的額時候可以修改func的this指向 由于timer對外部存在引用,因此不會被銷毀
  11. }
  12. }
  13. /*事件處理函數*/
  14. function testDeBounce(){
  15. console.log('你看我執行了幾次??')
  16. }
  17. // 接收debounce返回的函數
  18. const temp = debounce(testDeBounce(),1000)
  19. /*綁定事件,測試防抖函數*/
  20. window.addEventListener('scroll',()=>{
  21. temp()
  22. }); // 這樣寫最少調用一次事件處理函數,最多也不會多余下面的寫法執行的次數
  23. window.addEventListener('scroll', testDeBounce); // 如果這樣寫的話,每當頁面滾動就會調用事件處理函數
  • 總結一下思路

    1.定義一個節流函數

    2.函數內部使用一個變量保存定時器

    3.返回一個函數,函數內部定義:如果定時器已經存在就清除定時器,重新設置定時器

    4.定義一個變量來接收debounce返回的函數

    5.在事件的回調函數中直接調用上一步的變量接收的方法


二.、函數節流

函數節流在事件持續觸發的前提下,保證一定時間段內只調用一次事件處理函數,就是函數節流;

函數節流實現的方式定時器、時間戳、定時器+時間戳;

2.1 定時器實現

思路

1.定義節流函數throttle

2.定義timer保存定時器

3.返回一個函數。函數內部定義:如果定時器不存在,設置定時器,間隔某一時間后將timer設置為null,如果在這之前事件再次觸發,則定時器中的回調無效

<button>這是一個孤獨的按鈕</button> 

  1. /*
  2. * 定義定時器節流函數
  3. * func:傳入事件處理函數
  4. * delay:在delay指定的時間內定時器回調無效
  5. * */
  6. function throttle(func,delay) {
  7. let timer = null
  8. const context = this
  9. return function(...args){
  10. // 如果定時器不存在
  11. if(!timer){
  12. timer = setTimeout(()=>{
  13. func.apply(context,args) // 考慮返回的函數調用的環境,因此這里不直接使用this
  14. timer = null // delay之后清除定時器
  15. },delay)
  16. }
  17. }
  18. }
  19. function test() {
  20. console.log('啊啊啊!')
  21. }
  22. const temp = throttle(test,1000)
  23. document.querySelector('button').addEventListener('click',()=>{
  24. temp()
  25. })

2.2 時間戳實現


  1. var throttle = function(func, delay) {
  2. var prev = Date.now();
  3. return function() {
  4. var context = this;
  5. var args = arguments;
  6. var now = Date.now();
  7. if (now - prev >= delay) {
  8. func.apply(context, args);
  9. prev = Date.now();
  10. }
  11. }
  12. }
  13. function handle() {
  14. console.log(Math.random());
  15. }
  16. window.addEventListener('scroll', throttle(handle, 1000));

2.3 時間戳+定時器


  1. // 節流throttle代碼(時間戳+定時器):
  2. var throttle = function(func, delay) {
  3. var timer = null;
  4. var startTime = Date.now();
  5. return function() {
  6. var curTime = Date.now();
  7. var remaining = delay - (curTime - startTime);
  8. var context = this;
  9. var args = arguments;
  10. clearTimeout(timer);
  11. if (remaining <= 0) {
  12. func.apply(context, args);
  13. startTime = Date.now();
  14. } else {
  15. timer = setTimeout(func, remaining);
  16. }
  17. }
  18. }
  19. function handle() {
  20. console.log(Math.random());
  21. }
  22. window.addEventListener('scroll', throttle(handle, 1000));

最后 

想跟博主交朋友的可以查找,公_號?:前端老實人,跟博主一起探討學習哦?


藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉自:csdn
免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

藍藍設計www.lapeinture.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.lapeinture.cn

存檔

欧美激情一区二区三区在线| 999精品在线| 久久精品大片| 欧美激情一区二区三区视频| 成人高清视频免费观看| 天天做日日爱| 精品视频免费看| 黄视频网站免费| 999久久66久6只有精品| 91麻豆精品国产综合久久久| 香蕉视频一级| 国产成人啪精品| 欧美日本免费| 香蕉视频久久| 九九久久国产精品| 麻豆网站在线看| 国产网站在线| 国产伦精品一区二区三区无广告 | 欧美激情一区二区三区视频 | 免费一级片在线观看| 麻豆系列 在线视频| 国产不卡在线看| 国产视频一区在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产一区二区精品在线观看| 亚洲 男人 天堂| 国产极品精频在线观看| 国产不卡高清在线观看视频| 欧美激情一区二区三区在线 | 欧美国产日韩精品| 国产伦精品一区二区三区无广告 | 欧美另类videosbestsex久久| 国产麻豆精品hdvideoss| 香蕉视频久久| 日韩专区第一页| 日韩在线观看视频网站| 精品久久久久久中文| 99久久视频| 一级女人毛片人一女人| 九九九国产| 久久精品大片| 欧美激情一区二区三区视频高清| 91麻豆高清国产在线播放| 免费一级片在线| 欧美爱爱网| 日日夜夜婷婷| 国产福利免费观看| 国产欧美精品午夜在线播放| 国产麻豆精品免费视频| 日日爽天天| 国产91精品露脸国语对白| 久久精品免视看国产明星| 韩国毛片免费大片| 日韩专区亚洲综合久久| 成人影视在线播放| 99色视频在线观看| 麻豆系列 在线视频| 色综合久久天天综合| 亚洲 激情| 日本伦理片网站| 欧美一级视频免费观看| 国产欧美精品午夜在线播放| 国产不卡精品一区二区三区| 成人免费观看男女羞羞视频| 午夜久久网| 毛片高清| 欧美1区| 成人免费网站久久久| 一级毛片视频播放| 日本免费看视频| 在线观看成人网| 日韩男人天堂| 中文字幕97| 日韩中文字幕在线观看视频| 一级女性全黄久久生活片| 日本特黄特色aaa大片免费| 欧美日本免费| 九九免费高清在线观看视频| 午夜在线亚洲| 九九久久国产精品| 日日爽天天| 国产伦精品一区三区视频| 国产网站免费观看| 可以免费看毛片的网站| 日日爽天天| 毛片高清| 国产a视频精品免费观看| 免费一级生活片| 国产福利免费观看| 中文字幕一区二区三区 精品| 欧美另类videosbestsex高清 | 国产a视频精品免费观看| 日日夜夜婷婷| 欧美另类videosbestsex高清 | 国产91丝袜在线播放0| a级黄色毛片免费播放视频| 亚久久伊人精品青青草原2020| 国产一区二区精品久久| 青青青草视频在线观看| 精品视频一区二区三区| 可以在线看黄的网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 毛片电影网| 日韩av片免费播放| 国产一区二区精品久久91| 91麻豆高清国产在线播放| 二级片在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 999久久狠狠免费精品| 免费的黄视频| 国产伦理精品| 国产高清在线精品一区a| 天天做日日爱| 一级毛片视频免费| 亚洲天堂免费观看| 欧美大片aaaa一级毛片| 成人免费一级纶理片| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 黄视频网站在线看| 欧美激情伊人| 深夜做爰性大片中文| 四虎影视久久久| 精品视频一区二区三区免费| 日韩中文字幕在线亚洲一区 | 日本特黄特色aaa大片免费| 一级女人毛片人一女人| 成人免费观看男女羞羞视频| 黄色免费网站在线| 精品国产一区二区三区久久久狼| 国产视频久久久久| 欧美国产日韩精品| 一级毛片视频免费| 欧美激情一区二区三区在线 | 91麻豆国产级在线| 韩国三级视频在线观看| 国产亚洲男人的天堂在线观看| 欧美激情在线精品video| 亚洲 国产精品 日韩| 久久精品成人一区二区三区| 九九精品久久| 久草免费在线视频| 国产伦精品一区二区三区无广告 | 国产不卡精品一区二区三区| 台湾毛片| 成人免费一级毛片在线播放视频| 天天做日日爱| 成人影视在线观看| 精品在线观看一区| 一级毛片视频播放| 亚洲天堂免费观看| 美女免费毛片| 日韩av东京社区男人的天堂| 日日日夜夜操| 天天做日日爱| 美国一区二区三区| 国产麻豆精品高清在线播放| 国产一区二区精品| 可以免费看毛片的网站| 久久99中文字幕久久| 免费国产在线观看| 免费一级片在线| 天天做日日爱| 日韩在线观看视频网站| 欧美另类videosbestsex | 精品国产一区二区三区精东影业| 国产综合91天堂亚洲国产| 高清一级片| 国产网站在线| 国产成+人+综合+亚洲不卡| 精品国产三级a| 欧美18性精品| 国产伦精品一区二区三区无广告 | 日韩免费在线| 亚洲天堂在线播放| 国产精品自拍亚洲| 美女免费精品高清毛片在线视 | 九九免费高清在线观看视频| 欧美日本韩国| 韩国毛片免费| 成人高清护士在线播放| 日韩欧美一及在线播放| 亚欧视频在线| 精品国产一区二区三区免费 | 欧美激情一区二区三区视频 | 九九九网站| 精品国产一区二区三区国产馆| 91麻豆tv| 国产高清视频免费| 成人免费高清视频| 国产一区二区福利久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 韩国三级视频网站| 九九九网站| 国产欧美精品午夜在线播放| 久久精品人人做人人爽97| 精品在线观看一区| 国产麻豆精品hdvideoss| 可以免费看毛片的网站| 九九免费高清在线观看视频| 国产伦久视频免费观看视频|