92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线

Vue的防抖和節流(接口頻繁調用如何處理)

2021-9-29    前端達人

首先描述一下我所使用的業務場景:系統有一個批量審批的功能,每個審批的流程需要根據提交的用戶實時的反饋回去進去用戶頁面的刷新,如果一個用戶同時有多個流程被審批通過,前端會向服務端頻繁的多次調用同一個接口,造成服務器壓力過大和頁面卡頓,非常影響用戶體驗。
目標:需要短時間內向服務端頻繁調用接口時只去調用最后一次的接口。(防抖)

防抖和節流的區別:主要體現在執行次數上的區別,比如我們寫一個200ms的延遲時間,節流就是每200ms執行一次,而抖動是只有在最后一次事件的200ms內調用一次回調函數。
防抖和節流都可以用于 mousemove、scroll、resize、input、click等事件,他們的區別在于防抖只會在連續的事件周期結束時執行一次,而節流會在事件周期內按間隔時間有規律的執行多次。

防抖 debounce

當事件被頻繁觸發時,在一定的時間內再去執行回調函數,如果在等待期間再次被觸發,則重新計時,直至整個等待期間沒有新的事件被觸發,執行回調函數。

舉個例子:一個點擊事件,為了防止用戶重復發起請求,如果用戶在三秒內多次發生點擊事件,點擊事件將只執行一次,第一次和第二次點擊的間隔只要在三秒鐘內就會重置這個等待時間,第二次和第三次之間的最大等待時間也是三秒,如果第二次點擊事件發生后的三秒內沒有新的點擊事件產生,第二次點擊后的三秒就會調用回調函數。

可以直接引用loadsh的debounce方法來實現函數防抖,也可以自己寫一個防抖函數(利用定時器)

  1. 引用loadsh

這里先給一個中文文檔的地址:https://www.lodashjs.com/docs/lodash.debounce
在vue3.x中也推薦了這種方式:https://v3.vuejs.org/guide/data-methods.html#methods
有多種引用方式,這里我直接采用npm的方式

npm i --save lodash 
  • 1

使用loadsh的debounce方法

<el-button id="myBtn" type="goon" icon="el-icon-search" @click="test">點擊事件</el-button> 
  • 1
let _ = require('lodash'); _.debounce(fun,ms,options) fun: 回調函數
ms:等待時間,毫秒
options:選項對象 
  • 1
  • 2
  • 3
  • 4
  • 5

注意:這里點擊事件要寫成test: 的形式,test()這樣是不生效的

import debounce from 'lodash/debounce' methods:{ test:debounce(()=>{ console.log("防抖函數執行",) },3000) } //或者下面這種寫法 document.getElementById("myBtn").addEventListener('click', debounce(function (event) { console.log("防抖函數執行",) }, 3000)) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. 自定義防抖函數
<el-button type="goon" icon="el-icon-search" @click="test">點擊事件</el-button> 
  • 1
data:{ timer:null }, methods:{ //在最后一次點擊三秒后才會觸發一次點擊事件 test(){ clearTimeout(this.timer) //自定義個定時器三秒后執行,一旦有新的事件發生會將這個定時器清除重新創建一個,只有三秒內不出現事件這個定時器才不會被銷毀重構 this.timer = setTimeout(()=>{ console.log("防抖執行,這里就是你需要執行的操作") },3000) } } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

節流 throttle

在規定的時間內只觸發一次回調函數,在規定時間內多次觸發函數,只會執行一次

舉個例子:一個點擊事件,你設定了節流的延遲時間為一秒鐘,那么在你一直點擊的情況下,每隔一秒會觸發一次這個事件,直到你的點擊停止,這個不會累積,比如一秒鐘內點擊了五次,然后不再點擊時,事件也只會觸發一次而不會累積到觸發五次,這種累積的可以采用定時器實現。

節流一般多用于監聽輸入框和滾動條,同樣的在我們的loadsh中也有寫好的節流的函數throttle,使用方法和上面防抖類似,這里就不詳細寫了,主要寫一下 自定義的節流函數。

throttle(fun, ms,options) fun:需要節流的回調函數
ms:等待時間
options:額外配置項 
  • 1
  • 2
  • 3
  • 4

自定義節流函數:
原理就是用時間戳判斷是否到了回調的執行時間,記錄上次執行的時間戳,然后每次觸發 事件執行回調,回調里邊判斷當前時間戳距離上一次執行時間戳的間隔是否已經到達規定的時間,如果是就執行,并且會更新上次執行的時間戳。
下面是我寫的一個簡單的例子,可以根據自己需求進行修改

data:{ //這里我直接頁面創建時定義了一個初始的變量,保存上一次函數執行的時間 lastTime:new Date() }, methods:{ //fun 代表要執行的函數,需要被節流的函數 throttle(fun){ //函數執行時的時間 let now = new Date() console.log("now",now) console.log("lastTime",this.lastTime) //兩次調用的時間差 if (now - this.lastTime > 1000){ fun() //調用成功,上一次調用時間值修改 this.lastTime = now } }, test(){ this.throttle(function (){ //1000ms內無論點擊多少下,只會調用一次 console.log("節流函數調用,時間1000ms") }) }, } 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

image.png

如果項目多次用到可以將以上的方法封裝成一個工具類。

參考文章:https://www.jb51.net/article/161713.htm














藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

分享此文一切功德,皆悉回向給文章原作者及眾讀者.

轉自:csdn
免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

藍藍設計www.skdbbs.com )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

日歷

鏈接

個人資料

藍藍設計的小編 http://www.skdbbs.com

存檔

92国产精品视频_亚洲a级在线观看_国产精品电影观看_国产精品免费观看在线_精品伊人久久97_亚洲人成在线观_尤物九九久久国产精品的特点_成人激情在线播放_成人黄色大片在线免费观看_亚洲成人精品久久久_久久免费视频在线观看_久久精品国产一区_国产一区二区三区18_亚洲欧美中文字幕在线一区_日韩美女中文字幕_日韩视频免费在线
日韩中文字幕视频在线观看| 日韩中文字幕在线视频播放| 欧美色道久久88综合亚洲精品| 久久精品成人一区二区三区| 国产精品自拍视频| 久久频这里精品99香蕉| 一区二区三区无码高清视频| 欧美人与性动交a欧美精品| 一本色道久久88综合日韩精品| 国产欧美日韩亚洲精品| www.日韩欧美| 国产亚洲精品高潮| 亚洲第一网站男人都懂| 国产乱人伦真实精品视频| 欧美日韩xxxxx| 2021国产精品视频| 97碰碰碰免费色视频| 性亚洲最疯狂xxxx高清| 97av在线视频| 国产91精品高潮白浆喷水| 亚洲欧洲国产一区| 欧美中文字幕精品| 亚洲第一网站免费视频| 亚洲第一天堂无码专区| 日韩精品在线视频| 午夜免费久久久久| 性欧美长视频免费观看不卡| 日韩美女免费线视频| 亚洲午夜av电影| 97视频在线观看免费| 美日韩精品免费观看视频| 国产精品福利网站| 欧美国产极速在线| 91精品视频在线免费观看| 国产精品毛片a∨一区二区三区|国| 日韩精品免费看| 国产精品一区二区三区毛片淫片| 大量国产精品视频| 欧美放荡办公室videos4k| 欧美视频中文字幕在线| 在线观看日韩www视频免费| 国产精品91免费在线| 97精品视频在线| 九九精品在线视频| 伊人伊人伊人久久| 中日韩美女免费视频网站在线观看| 亚洲黄页网在线观看| 不卡伊人av在线播放| 亚洲天堂一区二区三区| 国产精品久久999| 久久九九精品99国产精品| 日韩在线播放av| 色综合久久88| 中文字幕精品久久久久| 欧美成人性生活| 亚洲欧美日韩中文视频| 51视频国产精品一区二区| 亚洲深夜福利在线| 一区二区三区无码高清视频| 亚洲欧美在线x视频| 亚洲性猛交xxxxwww| 2018日韩中文字幕| 国产精品成人观看视频国产奇米| 国产精品视频xxxx| 日韩欧美亚洲国产一区| 成人午夜激情网| 久久久久国产精品免费| 国产成人精品久久二区二区91| 中文字幕在线看视频国产欧美在线看完整| 亚洲mm色国产网站| 亚洲毛片一区二区| 丝袜美腿亚洲一区二区| 久久视频国产精品免费视频在线| 亚洲自拍小视频| 正在播放亚洲1区| 久久久亚洲影院你懂的| 日韩欧美主播在线| 亚洲国产精品高清久久久| 国产精品久久久久影院日本| 国产精品免费观看在线| 日本人成精品视频在线| 97香蕉久久夜色精品国产| 精品国产依人香蕉在线精品| 日韩成人av在线播放| 欧美又大又粗又长| 97超级碰碰碰| 欧美激情一区二区三级高清视频| 国产精品福利小视频| www.久久久久| 亚洲一区美女视频在线观看免费| 日韩电影中文字幕在线观看| 国产成人精品一区二区在线| 亚洲国产精品va在线看黑人| 亚洲欧美日韩天堂一区二区| 欧美电影免费观看高清完整| 欧美性猛交xxxx久久久| 国产精品第三页| 欧美激情第一页xxx| 91社影院在线观看| 亚洲最大av在线| 久久久久久97| 日韩av中文字幕在线播放| 欧美精品18videos性欧美| 国产激情视频一区| 日韩中文字幕精品| 黑人巨大精品欧美一区二区三区| 色综合久久精品亚洲国产| 亚洲天堂免费观看| 日韩电影大全免费观看2023年上| 国产精品久久久久久久久免费看| 久久视频在线看| 欧美亚洲国产视频小说| 97国产suv精品一区二区62| 国产日韩欧美综合| 欧美日韩国产精品一区二区三区四区| 日韩av电影手机在线观看| 久久久91精品| 国产精品r级在线| 日韩高清电影免费观看完整| 久久久人成影片一区二区三区观看| 亚洲一区二区黄| 国产成人精品免高潮费视频| 亚洲欧美一区二区三区在线| 国产精品十八以下禁看| 国产精品999| 欧美亚洲日本黄色| 国产美女精品免费电影| 欧美电影在线免费观看网站| 国产裸体写真av一区二区| 成人啪啪免费看| 亚洲欧美日韩图片| 久久久999成人| 精品国产乱码久久久久久天美| 久久99国产精品久久久久久久久| 亚洲二区在线播放视频| 久久躁狠狠躁夜夜爽| 国内精品久久久久伊人av| 欧美日产国产成人免费图片| 精品国偷自产在线视频| 九九九热精品免费视频观看网站| 原创国产精品91| 欧美精品videos| 91亚洲国产成人久久精品网站| 国产精品久久久久久久9999| 亚洲国产欧美日韩精品| 亚洲精品国产综合区久久久久久久| 欧美激情欧美激情| 亚洲www在线观看| 92看片淫黄大片欧美看国产片| 中文字幕日韩av综合精品| 欧美激情视频在线| 伊人伊人伊人久久| 欧美色播在线播放| 国产午夜精品视频免费不卡69堂| 亚洲精品二三区| 亚洲精品免费av| 午夜精品久久久久久久男人的天堂| 亚洲一区二区自拍| 国产精品久久久久久久久久久新郎| 亚洲一区二区久久久久久久| 亚洲欧美成人一区二区在线电影| 国产亚洲精品久久久久久| 国产精品亚洲自拍| 欧美日韩国产综合新一区|