JS中的防抖與節(jié)流

為啥要使用防抖和節(jié)流

在觸發(fā)mousemove、scroll等事件時,會不斷的調(diào)用綁定在事件上面的回調(diào)函數(shù),極大的限制了前端性能;因此我們要防止資源被過渡浪費和惡意點擊,我們需要對此類事件進行減少調(diào)用次數(shù),因此會用防抖和節(jié)流的方式來減少頻率。

防抖的定義:在固定時間內(nèi),事件只允許被發(fā)生一次

簡單的防抖函數(shù)

當input框輸入時,結果會實時查詢,也就是當用戶每輸入一個字符,函數(shù)就會被調(diào)用一次,如果當用戶手速過快時或惡意輸入時,會有n個請求,此時數(shù)據(jù)就會發(fā)生抖動。

若我們將在一定的事件內(nèi),把input框輸入事件合并成為一個,執(zhí)行的請求會根據(jù)設定的時間而發(fā)出一次請求,即將這段時間的所有操作只執(zhí)行一次。

節(jié)流的定義把一定時間內(nèi)的多個事件合為一個執(zhí)行

簡單的節(jié)流函數(shù)

當鼠標在盒子內(nèi)移動時,會不停的執(zhí)行回調(diào)函數(shù),就會輸出發(fā)送請求,所以我們需要處理讓鼠標移動時數(shù)據(jù)不要立刻發(fā)送請求

同樣,我們需要一個函數(shù)在連續(xù)操作中按照一定時間間隔只會執(zhí)行一次回調(diào)函數(shù),在頻率較高的事件中來節(jié)省性能

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1、先看個栗子 在很多網(wǎng)站中都有這樣一個功能,在頁面顯示一個按鈕,用于返回頁面的頂部,這個按鈕只會在頁面滾動到一定...
    Mr_Arc閱讀 1,562評論 1 0
  • 一、目的:防止函數(shù)被無意義高頻調(diào)用 二、理解: 1、防抖(debounce) 本質(zhì):函數(shù)在特定的時間內(nèi)不再被調(diào)用后...
    我喂自己帶鹽閱讀 1,001評論 0 18
  • 在前端開發(fā)中,經(jīng)常會遇到頻繁觸發(fā)某一事件的情況,如 scroll、mousemove、onchange等。這種高頻...
    vinoooooo閱讀 405評論 0 0
  • 防抖(debounce):一段時間之后才執(zhí)行某個函數(shù)節(jié)流(throttle):一段時間之內(nèi)執(zhí)行某個函數(shù) 防抖(de...
    愛吃豬大腸的賴小姐閱讀 306評論 0 1
  • 0. 引入 首先舉一個例子: 模擬在輸入框輸入后做ajax查詢請求,沒有加入防抖和節(jié)流的效果,這里附上完整可執(zhí)行代...
    年輕人多學點閱讀 573評論 0 3

友情鏈接更多精彩內(nèi)容