最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中函數(shù)防抖節(jié)流的理解及應(yīng)用實現(xiàn)

 更新時間:2020年04月24日 09:29:49   作者:fozero  
這篇文章主要介紹了Vue中函數(shù)防抖節(jié)流的理解及應(yīng)用實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

防抖和節(jié)流的目的都是為了減少不必要的計算,不浪費資源,只在適合的時候再進行觸發(fā)計算。

一、函數(shù)防抖

定義
在事件被觸發(fā)n秒后再執(zhí)行回調(diào),如果在這n秒內(nèi)又被觸發(fā),則重新計時;典型的案例就是輸入搜索:輸入結(jié)束后n秒才進行搜索請求,n秒內(nèi)又輸入的內(nèi)容,就重新計時。

實現(xiàn)原理
函數(shù)防抖的基本思想是設(shè)置一個定時器,在指定時間間隔內(nèi)運行代碼時清楚上一次的定時器,并設(shè)置另一個定時器,知道函數(shù)請求停止并超過時間間隔才會執(zhí)行。

使用場景
文本框輸入搜索(連續(xù)輸入時避免多次請求接口)

代碼實現(xiàn)

/**
 * 函數(shù)防抖
 */
export function debounce(fn, delay) {
 // 記錄上一次的延時器
 var timer = null;
 var delay = delay || 200;
 return function() {
  var args = arguments;
  var that = this;
  // 清除上一次延時器
  clearTimeout(timer)
  timer = setTimeout(function() {
    fn.apply(that,args)
  }, delay);
 }
}

二、函數(shù)節(jié)流

定義
規(guī)定在一個單位時間內(nèi),只能觸發(fā)一次函數(shù),如果這個單位時間內(nèi)觸發(fā)多次函數(shù),只有一次生效; 典型的案例就是鼠標(biāo)不斷點擊觸發(fā),規(guī)定在n秒內(nèi)多次點擊只有一次生效。

實現(xiàn)原理
其原理是用時間戳來判斷是否已到回調(diào)該執(zhí)行時間,記錄上次執(zhí)行的時間戳,然后每次觸發(fā) scroll 事件執(zhí)行回調(diào),回調(diào)中判斷當(dāng)前時間戳距離上次執(zhí)行時間戳的間隔是否已經(jīng)到達 規(guī)定時間段,如果是,則執(zhí)行,并更新上次執(zhí)行的時間戳,

使用場景

resize、scroll、mousemove等事件觸發(fā)監(jiān)聽

代碼實現(xiàn)

/**
 * 函數(shù)節(jié)流
 */
export function throttle(fn,delay){
 var lastTime;
 var timer;
 var delay = delay || 200;
 return function() {
  var args = arguments;
  // 記錄當(dāng)前函數(shù)觸發(fā)的時間
  var nowTime = Date.now();
  if (lastTime && nowTime - lastTime < delay) {
   clearTimeout(timer);
   timer = setTimeout(function () {
    // 記錄上一次函數(shù)觸發(fā)的時間
    lastTime = nowTime;
    // 修正this指向問題
    fn.apply(this, args);
   }, delay);
  }else{
   lastTime = nowTime;
   fn.apply(this, args);
  }
 }
} 

三、在Vue中使用函數(shù)防抖實現(xiàn)輸入框搜索

效果圖如下

新建common.js文件

/**
 * 函數(shù)防抖
 */
export function debounce(fn, delay) {
 // 記錄上一次的延時器
 var timer = null;
 var delay = delay || 200;
 return function() {
  var args = arguments;
  var that = this;
  // 清除上一次延時器
  clearTimeout(timer)
  timer = setTimeout(function() {
    fn.apply(that,args)
  }, delay);
 }
}

在vue組件中引入

import {debounce} from '@/utils/common.js'

在組件中使用

<div class="white-search-bar">
    <div class="search-bar-item">
     <span class="iconfont icon-search"></span>
     <input class="search-bar-input" :class="{'search-bar-focus':isSearchFocus}" type="text" maxlength="8" placeholder="應(yīng)用搜索" v-model="keyword" @keyup="appSearch" @focus="onSearchFocus" @blur="onSearchBlur">
    </div>
    <span class="search-bar-btn" @click="appSearchCancel" v-if="isSearchFocus">取消</span>
   </div>

methods:{
appSearch:debounce(function(){
  		 this.getAppList()
  	 },300)
}

參考閱讀

https://www.jqhtml.com/20268.html

到此這篇關(guān)于Vue中函數(shù)防抖節(jié)流的理解及應(yīng)用實現(xiàn)的文章就介紹到這了,更多相關(guān)Vue 函數(shù)防抖節(jié)流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue使用exceljs導(dǎo)出excel文件的詳細教程

    Vue使用exceljs導(dǎo)出excel文件的詳細教程

    這篇文章主要為大家詳細介紹了Vue如何使用exceljs導(dǎo)出excel文件的詳細教程,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • 解析如何自動化生成vue組件文檔

    解析如何自動化生成vue組件文檔

    在我們的印象使用中,vue除了寫業(yè)務(wù)代碼沒有特別新奇的功能了,今天就來看看如何自動化生成vue組件文檔
    2021-06-06
  • vue3.x:報錯清單及解決記錄

    vue3.x:報錯清單及解決記錄

    這篇文章主要為大家介紹了vue3.x:報錯清單及解決記錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • iview form清除校驗狀態(tài)的實現(xiàn)

    iview form清除校驗狀態(tài)的實現(xiàn)

    這篇文章主要介紹了iview form清除校驗狀態(tài)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue實現(xiàn)購物車的小練習(xí)

    vue實現(xiàn)購物車的小練習(xí)

    這篇文章主要為大家詳細介紹了vue實現(xiàn)購物車的小練習(xí),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法

    vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法

    近嘗試上手 Vue3+TS+Vite,所以下面這篇文章主要給大家介紹了關(guān)于vue3+ts實際開發(fā)中該如何優(yōu)雅書寫vue3語法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • vue中復(fù)用vuex.store對象的定義

    vue中復(fù)用vuex.store對象的定義

    這篇文章主要介紹了vue中復(fù)用vuex.store對象的定義,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue3中的ref與reactive使用方法對比

    vue3中的ref與reactive使用方法對比

    Vue3 提供了兩個新的 API:ref 和 reactive,它們可以幫助我們更好地管理和處理響應(yīng)式數(shù)據(jù),這篇文章主要介紹了vue3中的ref與reactive的區(qū)別和使用方法,需要的朋友可以參考下
    2023-04-04
  • vue 自定義組件的寫法與用法詳解

    vue 自定義組件的寫法與用法詳解

    這篇文章主要介紹了vue 自定義組件的寫法與用法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2020-03-03
  • vue2從數(shù)據(jù)變化到視圖變化之nextTick使用詳解

    vue2從數(shù)據(jù)變化到視圖變化之nextTick使用詳解

    這篇文章主要為大家介紹了vue2從數(shù)據(jù)變化到視圖變化之nextTick使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09

最新評論

通州区| 肃宁县| 临沂市| 克拉玛依市| 安达市| 桓仁| 白水县| 漳州市| 都江堰市| 龙门县| 望奎县| 宜兰县| 龙海市| 察哈| 维西| 兴宁市| 广灵县| 宁蒗| 娄底市| 丰都县| 全州县| 合阳县| 南投市| 灵丘县| 阳原县| 利津县| 三明市| 自贡市| 报价| 林甸县| 芜湖市| 日照市| 金华市| 清远市| 盈江县| 罗江县| 汉寿县| 镇宁| 白水县| 克东县| 临夏县|