js節(jié)流防抖的應(yīng)用場景和在vue中如何實(shí)現(xiàn)節(jié)流防抖?針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
函數(shù)防抖(debounce):
在事件被觸發(fā)n秒后再執(zhí)行回調(diào),如果在這n秒內(nèi)又被觸發(fā),則重新計(jì)時(shí);典型的案例就是輸入搜索:輸入結(jié)束后n秒才進(jìn)行搜索請(qǐng)求,n秒內(nèi)又輸入的內(nèi)容,就重新計(jì)時(shí)。
函數(shù)節(jié)流(throttle):
規(guī)定在一個(gè)單位時(shí)間內(nèi),只能觸發(fā)一次函數(shù),如果這個(gè)單位時(shí)間內(nèi)觸發(fā)多次函數(shù),只有一次生效; 典型的案例就是鼠標(biāo)不斷點(diǎn)擊觸發(fā),規(guī)定在n秒內(nèi)多次點(diǎn)擊只有一次生效。
setTimeout內(nèi) this失效:
這是由于setTimeout函數(shù)調(diào)用的代碼運(yùn)行在與所在函數(shù)完全分離的執(zhí)行環(huán)境上,這會(huì)使得this指向的是window對(duì)象,看下圖 :
打了斷點(diǎn),在Console下輸出 this 是Window對(duì)象,解決這個(gè)問題可以在setTimeout函數(shù)外面定義一個(gè) that = this 就可以了,輸出 that果然就是該組件的對(duì)象
看在vue中的實(shí)際代碼:
1.輸入框,輸入最后一個(gè)字 2秒后執(zhí)行(防抖:debounce):
html:
<input type="text" class="input" v-model="searchText" @keyup="debounce"/>
js:
debounce: function(){ let that = this if(timer){ clearTimeout(timer) } timer = setTimeout(function () { console.log('輸入') timer = undefined; },2000) }
分享題目:js節(jié)流防抖的應(yīng)用場景和在vue中如何實(shí)現(xiàn)節(jié)流防抖-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.rwnh.cn/article36/doeosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、做網(wǎng)站、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、商城網(wǎng)站、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容