如何在Vue中使用debouce防抖函數(shù)
1.防抖函數(shù)
假定兩次 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毫秒之內(nèi),用戶再次擊鍵,就會取消上一次的定時器,然后再新建一個定時器。這樣就保證了回調(diào)函數(shù)之間的調(diào)用間隔,至少是2500毫秒。
2.Vue中使用debouce防抖函數(shù)
創(chuàng)建一個 debounced
(防抖動)函數(shù),該函數(shù)會從上一次被調(diào)用后,延遲 wait 毫秒后調(diào)用 func 方法。 debounced(防抖動)函數(shù)提供一個 cancel 方法取消延遲的函數(shù)調(diào)用以及 flush
方法立即調(diào)用。 可以提供一個 options
(選項) 對象決定如何調(diào)用 func 方法,options.leading 與|或 options.trailing 決定延遲前后如何觸發(fā)
(注:是 先調(diào)用后等待 還是 先等待后調(diào)用)。
?func
調(diào)用時會傳入最后一次提供給 debounced
(防抖動)函數(shù) 的參數(shù)。 后續(xù)調(diào)用的 debounced
(防抖動)函數(shù)返回是最后一次 func 調(diào)用的結(jié)果。
Lodash debouce參數(shù):
func? (Function)
: 要防抖動的函數(shù)。[wait=0]? (number)
: 需要延遲的毫秒數(shù)。[options=]? (Object)
: 選項對象。[options.leading=false]? (boolean)
: 指定在延遲開始前調(diào)用。[options.maxWait]? (number)
: 設(shè)置 func 允許被延遲的最大值。[options.trailing=true]? (boolean)
: 指定在延遲結(jié)束后調(diào)用。
<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() { // 取消該函數(shù)的防抖動調(diào)用 this.handleSearch.cancel(); }, } </script>
到此這篇關(guān)于如何在Vue中使用debouce防抖函數(shù)的文章就介紹到這了,更多相關(guān)Vue中使用debouce防抖函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue Element-ui input 遠(yuǎn)程搜索與修改建議顯示模版的示例代碼
本文分為html,js和css代碼給大家詳細(xì)介紹了vue Element-ui input 遠(yuǎn)程搜索與修改建議顯示模版功能,感興趣的朋友一起看看吧2017-10-10Vue3中使用Element?Plus時el-icon無法顯示的問題解決
我們的Vue前端一般都是用的ElementUI,其中按鈕可能用到的比較多,官方里面有自帶的一些默認(rèn)圖標(biāo),下面這篇文章主要給大家介紹了關(guān)于Vue3中使用Element?Plus時el-icon無法顯示的問題解決,需要的朋友可以參考下2022-03-03在vue中使用echarts(折線圖的demo,markline用法)
這篇文章主要介紹了在vue中使用echarts(折線圖的demo,markline用法),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實現(xiàn)代碼
菜單管理是一個對菜單樹結(jié)構(gòu)的增刪改查操作,這篇文章主要介紹了Vue + Element UI 實現(xiàn)權(quán)限管理系統(tǒng)之菜單功能實現(xiàn)代碼,需要的朋友可以參考下2022-02-02