關於防抖與節流的思考

来源:https://www.cnblogs.com/tony-stark/archive/2019/08/22/11393822.html
-Advertisement-
Play Games

百度防抖與節流,一直沒搞懂防抖與節流的區別,然後google了一下,(google大法好 _(:з」∠)_)個人理解了一下 1,比較正式的解釋他們的區別: 防抖:就是指觸發事件後在 n 秒內函數只能執行一次,如果在 n 秒內又觸發了事件,則會重新計算函數執行時間,防抖註重結果 節流::是讓一個函數無 ...


百度防抖與節流,一直沒搞懂防抖與節流的區別,然後google了一下,(google大法好

 _(:з」∠)_)個人理解了一下   1,比較正式的解釋他們的區別:           防抖:就是指觸發事件後在 n 秒內函數只能執行一次,如果在 n 秒內又觸發了事件,則會重新計算函數執行時間,防抖註重結果            節流::是讓一個函數無法在很短的時間間隔內連續調用,當上一次執行完之後過了規定的時間間隔,才能進行下一次的函數調用,節流註重過程   2,非官方解釋           防抖:A打了一個B一下,B開始哭(假設哭5分鐘),在這5分鐘內A一直打,而B就只為哭A打的第一下,其他的從第二次開始,B就像練了金鐘罩一樣,抗打ƪ(˘⌣˘)ʃ,但是這5分鐘過了之後金鐘罩沒了,需要A重新打一次,讓B哭出來才重新生成金鐘罩           節流:這就有點像鬼畜了,A一直打,B一直哭,但是每次都是重新哭,類似於諸葛亮說 ‘竟然有如此厚顏無恥之人’,那麼我們在暫停與播放之間快速切換就會出現 ‘竟然’  ‘竟然’  ‘竟然’  ‘竟然’  ‘竟然’  ‘竟然’  ‘竟然’  ‘竟然’  ‘有如此厚顏無恥之人’;   3,應用場景          防抖:視窗 resize時,搜索時需要根據輸入框中的內容發送ajax請求時。。。。。。          節流:滾動條到達底部(比如要做載入更多)。。。。。。  4,程式實現:
//節流
   let time;
   let per = 200; //這個是間隔時間,即事件觸發到事件回調開始執行的間隔時間。根據業務需求決定
    function throtting(){
     if(time){
   clearTimeout(time)
}
    time = setTimeout(function(){
   //事件回調的具體方法

},per)

}
//防抖
   let timelength=2000;//即在2秒內自第二次開始的其他事件觸發都將被忽略
   let lasttime = null;//上一次執行的時間點
   function debounce(){
     if(!lasttime){
lasttime = new Date().getTime()
   }else{
     let curenttime=new Date().getTime();
    if(curenttime - lasttime>2000){
 //事件回調的具體方法
   //需將上一次的時間更新↓
     lasttime = curenttime 

}else{
  //時間不夠,不做任何操作
return false

}

}
     

}

 


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

-Advertisement-
Play Games
更多相關文章
  • 說起佈局其實就和蓋房子的道理一樣,你首先要蓋好房子的模型(規劃好頁面的佈局),房子的雛形蓋好後就是往房子裡面佈置傢具了(在佈局裡面添加東西),這樣,房子蓋好後不論你往裡面添加什麼傢具也不能影響房子(杠精請坐下),佈局也一樣,佈局完成後,只需要在佈局的容器裡面添加更加細化的東西就行了。切忌邊寫內容邊布 ...
  • 瀏覽器 1. shell: 外殼 2. core: 內核(JS執行引擎,渲染引擎) IE: Trident Firefox: Gecko Chrome: Webkit / Blink safari: Webkit opera: Presto / Blink ...
  • 1、什麼是預解析? 在當前作用域下,JS 運行之前,會把帶有 var 和 function 關鍵字的事先聲明,併在記憶體中安排好。(這個過程也可以理解為變數提升)然後再從上到下執行 JS 語句(預解析只會發生在通過 var 定義的變數和 function 上) 2、var 聲明的變數 使用 var 聲 ...
  • JavaScript 誕生於1995年,它的出現主要是用於處理網頁中的 前端驗證。 • 所謂的前端驗證,就是指檢查用戶輸入的內容是否符合一定的 規則。 • 比如:用戶名的長度,密碼的長度,郵箱的格式等。 JavaScript是由網景公司發明,起初命名為LiveScript,後來由 於SUN公司的介入 ...
  • css作用:控制網頁的樣式 css語法: 選擇符{ 屬性1:屬性值; 屬性2:屬性值; 屬性3:屬性值1 屬性值2 屬性值3; } css實例: div{ width:300px; height:400px; background:red; } css語法解釋: 1、選擇符:對標簽進行獲取 2、所有 ...
  • 預解析指的就是,在js文件或者script裡面的代碼在正式開始執行之前,進行的一些解析工作。這個工作很簡單,就是在全局中尋找var關鍵字聲明的變數和通過function關鍵字聲明的函數。 1.尋找 var function 參數 等關鍵字,根據var a提前設置為 a=未定義(undefined)  ...
  • 今天詳細講解JavaScript中的常用事件類型和功能。 一 滑鼠事件 1, click:點擊事件 等同於mousedown+mouseup,不管這兩個事件間隔多久,都會觸發一次click事件。 2, mousedown:滑鼠按下事件 3, mouseup:滑鼠彈起事件 4, mouseover/m ...
  • 問題:在H5中,我們有這樣的需求:例如有列表的時候,滾動到底部時,需要載入更多。 解決方案:可以採用window的滾動事件進行處理 分析:如果滾動是針對整個屏幕而言的(不針對於某個界面小塊),那麼這個應該是是成立的:屏幕的高度+最大滾動的距離 = 內容的高度 代碼實現: 代碼的相關說明:很多時候,列 ...
一周排行
    -Advertisement-
    Play Games
  • 1. 說明 /* Performs operations on System.String instances that contain file or directory path information. These operations are performed in a cross-pla ...
  • 視頻地址:【WebApi+Vue3從0到1搭建《許可權管理系統》系列視頻:搭建JWT系統鑒權-嗶哩嗶哩】 https://b23.tv/R6cOcDO qq群:801913255 一、在appsettings.json中設置鑒權屬性 /*jwt鑒權*/ "JwtSetting": { "Issuer" ...
  • 引言 集成測試可在包含應用支持基礎結構(如資料庫、文件系統和網路)的級別上確保應用組件功能正常。 ASP.NET Core 通過將單元測試框架與測試 Web 主機和記憶體中測試伺服器結合使用來支持集成測試。 簡介 集成測試與單元測試相比,能夠在更廣泛的級別上評估應用的組件,確認多個組件一起工作以生成預 ...
  • 在.NET Emit編程中,我們探討了運算操作指令的重要性和應用。這些指令包括各種數學運算、位操作和比較操作,能夠在動態生成的代碼中實現對數據的處理和操作。通過這些指令,開發人員可以靈活地進行算術運算、邏輯運算和比較操作,從而實現各種複雜的演算法和邏輯......本篇之後,將進入第七部分:實戰項目 ...
  • 前言 多表頭表格是一個常見的業務需求,然而WPF中卻沒有預設實現這個功能,得益於WPF強大的控制項模板設計,我們可以通過修改控制項模板的方式自己實現它。 一、需求分析 下圖為一個典型的統計表格,統計1-12月的數據。 此時我們有一個需求,需要將月份按季度劃分,以便能夠直觀地看到季度統計數據,以下為該需求 ...
  • 如何將 ASP.NET Core MVC 項目的視圖分離到另一個項目 在當下這個年代 SPA 已是主流,人們早已忘記了 MVC 以及 Razor 的故事。但是在某些場景下 SSR 還是有意想不到效果。比如某些靜態頁面,比如追求首屏載入速度的時候。最近在項目中回歸傳統效果還是不錯。 有的時候我們希望將 ...
  • System.AggregateException: 發生一個或多個錯誤。 > Microsoft.WebTools.Shared.Exceptions.WebToolsException: 生成失敗。檢查輸出視窗瞭解更多詳細信息。 內部異常堆棧跟蹤的結尾 > (內部異常 #0) Microsoft ...
  • 引言 在上一章節我們實戰了在Asp.Net Core中的項目實戰,這一章節講解一下如何測試Asp.Net Core的中間件。 TestServer 還記得我們在集成測試中提供的TestServer嗎? TestServer 是由 Microsoft.AspNetCore.TestHost 包提供的。 ...
  • 在發現結果為真的WHEN子句時,CASE表達式的真假值判斷會終止,剩餘的WHEN子句會被忽略: CASE WHEN col_1 IN ('a', 'b') THEN '第一' WHEN col_1 IN ('a') THEN '第二' ELSE '其他' END 註意: 統一各分支返回的數據類型. ...
  • 在C#編程世界中,語法的精妙之處往往體現在那些看似微小卻極具影響力的符號與結構之中。其中,“_ =” 這一組合突然出現還真不知道什麼意思。本文將深入剖析“_ =” 的含義、工作原理及其在實際編程中的廣泛應用,揭示其作為C#語法奇兵的重要角色。 一、下劃線 _:神秘的棄元符號 下劃線 _ 在C#中並非 ...