js的防抖函式做了什麼

2021-10-12 16:16:53 字數 1458 閱讀 2412

在開發中經常會遇到一些頻繁的事件觸發,如onscrolloninput之類的等事件。其實為了實現我們最終的功能,頻繁觸發的事件也許只有最後一次觸發才是我們想要的,那麼防抖函式就是幹這個用途的。我們給它乙個時間,告訴該函式,當前設定的時間內,只執行一次該函式,這樣就減少了非必要事件的執行。

現在我們設定乙個案例來實踐一下,比如說,我們在一次滾動事件,只想要滾動的最終值。

>

>

charset

="utf-8"

>

>

title

>

>

#parent

#child

style

>

head

>

>

"parent"

>

"child"

>

div>

div>

>

let $parent = document.

queryselector

("#parent");

// 先要初始化一次,保證呼叫的過程中都是呼叫同乙個閉包返回的函式

let dobouncefn =

dobounce

(getscrollval,

1000);

$parent.

onscroll

=function

(e)// 很明顯,利用了防抖後,我們的功能函式每秒只會取一次值

function

getscrollval()

// 防抖

// 1、防止函式多次重複執行

function

dobounce

(fn, wait)

let context =

this

;let args = arguments;

timer =

settimeout

(function()

, wait)}}

script

>

body

>

html

>

防抖的**其實很簡短,但是卻用到了定時器、閉包,call,對於創造出這個函式的大佬真是佩服。

/**

* 防抖函式

* @param fn

* @param wait

*/function

dobounce

(fn, wait)

let context =

this

;let args = arguments;

timer =

settimeout

(function()

, wait)

}}

js中的防抖函式

舉個例子 我們直接執行了乙個 refresh 這個refresh函式會被執行30次,這樣的話就太過於頻繁了,我們就可以將refresh放入防抖函式中去,生成乙個新的函式,之後,我們就使用新的函式 上面說的可能有些抽象了,看看下面的 估計會好理解一些 封裝乙個防抖動方法 debounce 防抖函式,它...

js函式防抖和節流

觸發事件在 n 秒內只會執行一次函式,如果在 n 秒內又觸發了事件,則會重新計算函式執行時間 作用就是限制觸發任務 介面呼叫 的頻率,一般用於關鍵字搜尋,表單驗證 demo handlesearch function then function data catch function err 100...

JS函式節流 函式防抖

函式節流 throttle 函式節流 加入函式節流函式 使用方法 this.refs.throttle.addeventlistener scroll throttle that.console,300 函式防抖 debounce 很明顯,這樣的做法不好的是當使用者輸入第乙個字元的時候,就開始請求判...