防抖&節流

来源:https://www.cnblogs.com/fanzhikang/archive/2019/09/14/11519169.html
-Advertisement-
Play Games

使用的原因 在前端開發當中有一部分的用戶行為會頻繁操作觸發事件執行,而對於DOM操作,資源載入等耗費性能的處理,很可能導致頁面卡頓,甚至瀏覽器崩潰,函數節流和防抖就是解決類似需求應運而生的 節流 預定一個函數只有在大於等於執行周期時才執行,周期內調用不執行 ,就像水滴攢到一定重量會下落一樣 運用場景 ...


使用的原因

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

節流

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

運用場景:

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

        let throttle =  (fn,waitTime) => {
            let lastTime = 0;
            return function () {
                let nowTime = new Date().getTime();
                if (nowTime - lastTime >= waitTime) {
                    fn();//執行的時候註意this指向
                    lastTime = nowTime;
                }
            }
        }

防抖

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

運用場景

  • 實時搜索(keyup)
  • 拖拽(mousemove)
    let antiShake = (fn,intervalTime) => {
        let timer = null;
        return function () {
            clearTimeout(timer);
            timer = setTimeout(() => {
                fn()
            },intervalTime)
        }
    }

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Docker是開源的應用容器引擎。可以理解為輕量級的虛擬機,又可以理解為開了掛的chroot。 官方解釋為docker是一個開源的項目,可以用來將任何應用以輕量級容器的形式,打包,發佈和運行。 docker架構: docker run images_name 運行容器 docker images 查 ...
  • [TOC] 1. 線程同步概述 線程同步定義 線程同步,指的是控制多線程間的相對執行順序,從而線上程間正確、有序地共用數據,以下為線程同步常見使用場合。 多線程執行的任務在順序上存在依賴關係 線程間共用數據只能同時被一個線程使用 線程同步方法 在實際項目中,經常使用的線程同步方法主要分為三種: 互斥 ...
  • 二叉堆因為實現簡單,因此在需要優先隊列的時候幾乎總是使用二叉堆。d 堆是二叉堆的簡單推廣,它恰像一個二叉堆,只是所有的節點都有d個兒子(因此,二叉堆又叫2 堆)。下圖表示的是一個3 堆。註意,d 堆要比二叉堆淺得多,它將Insert操作的運行時間改進為。然而,對於大的d,DeleteMin操作費時得 ...
  • 本文針對window操作系統與oracle12C的版本。 1.sqlplus執行單個sql文件 1.執行sqlplus登陸命令:sqlplus username/password@host:port/service_name as sysdba (其中普通用戶可以不加後面的 as sysdba) 2 ...
  • Gradle 本身只提供基本框架和核心概念,幾乎所有的功能都是以插件的方式提供的。 例如構建 Java 應用的功能就是通過 Java 插件實現的。 ...
  • 什麼是jsonp : Jsonp(JSON with Padding) 是 json 的一種"使用模式",可以讓網頁從別的功能變數名稱(網站)那獲取資料,即跨域讀取數據。 為什麼我們從不同的域(網站)訪問數據需要一個特殊的技術( JSONP )呢?這是因為同源策略。 同源策略,它是由 Netscape 提出 ...
  • 1.類選擇器(通過類名進行選擇) 效果圖: 2.id選擇器(通過id進行選擇) 效果圖: 3.標簽選擇器(通過id進行選擇) 效果圖: 4.分組選擇器(可一次選擇多個標簽以設置相同樣式) 效果圖: 5.後代選擇器(選擇某個標簽的所有後代以設置相同樣式) 效果圖: 6.屬性選擇器(通過屬性(如name ...
  • jQuery jQuery介紹 1.jQuery是一個輕量級的、相容多瀏覽器的JavaScript庫。 2.jQuery使用戶能夠更方便地處理HTML Document、Events、實現動畫效果、方便地進行Ajax交互,能夠極大地簡化JavaScript編程。它的宗旨就是:“Write less, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...