debounce防抖函式的使用

2021-10-07 15:25:30 字數 934 閱讀 7599

說明

1.首頁有30多張,每次載入完都要執行乙個refresh的函式,由於執行次數過多,對refresh函式進行防抖

2.位於元件goodsitem.vue中,需要傳送事件給home.vue

步驟

1. 建立乙個utils.js檔案封裝debounce函式

//func為要執行的函式(要防抖的),delay為防抖的毫秒數,在該毫秒數內的函式會被合併掉

export

function debounce(func, delay)

timer = settimeout(()=

>

, delay)}}

;

2.當goodsitem.vue元件中的載入完時,傳送事件給元件home.vue(父子元件就直接傳送,不需要匯流排)

"goods-list-item"

>

"imgsrc" @load=

"imgload" />

export default }}

3. 首頁home.vue接收事件,執行防抖,注意要定義乙個refresh來儲存debounce(this.$refs.scroll.refresh, 500),然後呼叫this.refresh(),直接使用debounce函式的話就會建立多個物件,就沒防抖了

4. 如果是父子元件的話,子元件this.$emit(『imgload』),父元件接收@imgload = 「imgload」,然後在methods中定義

手寫防抖debounce

防抖 debounce 一段時間不觸發事件才執行一次handle函式 const input1 document.getelementbyid input1 let timer null input1.addeventlistener keyup function timer settimeout ...

JS中的函式防抖 debounce

概念 函式防抖 debounce 就是指觸發事件後,在 n 秒內函式只能執行一次,如果觸發事件後在 n 秒內又觸發了事件,則會重新計算函式延執行時間。舉個栗子,坐電梯的時候,如果電梯檢測到有人進來 觸發事件 就會多等待 10 秒,此時如果又有人進來 10秒之內重複觸發事件 那麼電梯就會再多等待 10...

函式去抖debounce使用

這裡debounce是引用的lodash庫 import from lodash 下面就可以使用debounce了。場景 input框每次值改變的時候,其下面會出現乙個下拉列表 這是通過呼叫後端介面獲得的資料 但是不想每次input值改變的時候都要重複呼叫一下介面,不然介面呼叫的太頻繁,又可能導致網...