如何在Vue中使用debouce防抖函數
1.防抖函數
假定兩次 Ajax 通信的間隔不得小於2500毫秒,上面的代碼可以改寫成下面這樣。
$('textarea').on('keydown', debounce(ajaxAction, 2500)); function debounce(fn, delay){ var timer = null; // 聲明計時器 return function() { var context = this; var args = arguments; clearTimeout(timer); timer = setTimeout(function () { fn.apply(context, args); }, delay); }; }
上面代碼中,隻要在2500毫秒之內,用戶再次擊鍵,就會取消上一次的定時器,然後再新建一個定時器。這樣就保證瞭回調函數之間的調用間隔,至少是2500毫秒。
2.Vue中使用debouce防抖函數
創建一個 debounced
(防抖動)函數,該函數會從上一次被調用後,延遲 wait 毫秒後調用 func 方法。 debounced(防抖動)函數提供一個 cancel 方法取消延遲的函數調用以及 flush
方法立即調用。 可以提供一個 options
(選項) 對象決定如何調用 func 方法,options.leading 與|或 options.trailing 決定延遲前後如何觸發
(註:是 先調用後等待 還是 先等待後調用)。
func
調用時會傳入最後一次提供給 debounced
(防抖動)函數 的參數。 後續調用的 debounced
(防抖動)函數返回是最後一次 func 調用的結果。
Lodash debouce參數:
func (Function)
: 要防抖動的函數。[wait=0] (number)
: 需要延遲的毫秒數。[options=] (Object)
: 選項對象。[options.leading=false] (boolean)
: 指定在延遲開始前調用。[options.maxWait] (number)
: 設置 func 允許被延遲的最大值。[options.trailing=true] (boolean)
: 指定在延遲結束後調用。
<template> <el-input v-model="value" size="mini" placeholder="請輸入.." clearable @keydown.enter="handleSearch" ></el-input> </template> <script> import _ from 'lodash' export default { data() { return { value: '' } }, create() { this.handleSearch = _.debounce(() => { // 獲取列表 this.getList(); }, 300); }, beforeDestroy() { // 取消該函數的防抖動調用 this.handleSearch.cancel(); }, } </script>
到此這篇關於如何在Vue中使用debouce防抖函數的文章就介紹到這瞭,更多相關Vue中使用debouce防抖函數內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JavaScript防抖動與節流處理
- vue實現防抖的實例代碼
- vue中防抖和節流的使用方法
- uniapp項目使用防抖及節流的方案實戰
- JavaScript 防抖debounce與節流thorttle