Vue中使用 Lodash.throttle 來(lái)做節(jié)流

Vue中使用 Lodash.throttle 來(lái)做節(jié)流

在Vue中,有時(shí)需要對(duì)ajax請(qǐng)求提交進(jìn)行節(jié)流操作.這時(shí)候,如果頁(yè)面在請(qǐng)求成功之后會(huì)跳轉(zhuǎn),使用vue指令once或者加載一個(gè)loading遮罩禁止點(diǎn)擊即可,但如果請(qǐng)求之后不跳轉(zhuǎn),并且loading不適用時(shí),需要通過(guò)其他方式來(lái)實(shí)現(xiàn)節(jié)流,比如通過(guò)標(biāo)識(shí)位判斷等,這里我們著重說(shuō)一下如何通過(guò)lodash.throttle來(lái)實(shí)現(xiàn)節(jié)流

lodash

lodash是一個(gè)廣受歡迎的js工具庫(kù),其中包含了各種各樣的工具函數(shù),方便開(kāi)發(fā)時(shí)不需要反復(fù)造輪子,更關(guān)注于業(yè)務(wù).目前已經(jīng)是4.x版本,文檔也十分好找lodash中文文檔

_.throttle

這是lodash中的節(jié)流函數(shù),具體作用可以直接看官方文檔,這里不再進(jìn)行解釋

說(shuō)下在vue中具體怎么用

首先上錯(cuò)誤用法

import _ from 'lodash'

export default{
 methods:{
    click(){
        _.throttle(()=>{
            console.log('hello')
        },1000)
    }
 }
}

以上這樣寫,在執(zhí)行時(shí)候并不會(huì)打印console

正確用法

<button @click="clickMe">Click Me</button>

import _ from 'lodash'

export default{
 methods:{
    clickMe:_.throttle(function(event){
            console.log('hello')
            console.log(this)
            console.log('event',event)
    },1000)
 }
}

在lodash的throttle方法中,可以直接使用function,而且額外的好處是無(wú)需重新指向this,在函數(shù)內(nèi)部中,已經(jīng)做了apply,所以這里的this指向的就是vue實(shí)例,這樣對(duì)已有函數(shù)的改造也是十分的方便,外面包一層_.throttle就可以了!

注意

不要在throttle或者debounce中使用箭頭函數(shù),會(huì)導(dǎo)致this指向不正確,lodash中已通過(guò)apply為function繼承了原函數(shù)的this指向

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容