您好,登錄后才能下訂單哦!
小編給大家分享一下怎么在Vue中使用debouce防抖函數,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
假定兩次 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毫秒。
創建一個 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防抖函數”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。