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

Vue手寫防抖和節(jié)流函數(shù)代碼詳解

 更新時(shí)間:2023年02月25日 09:49:03   作者:周興  
在Vue中函數(shù)的防抖和節(jié)流不是什么新鮮話題,這篇文章主要給大家介紹了關(guān)于Vue3中防抖/節(jié)流的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 手寫防抖debounce

首先介紹一個(gè)防抖的應(yīng)用場(chǎng)景。假如需要監(jiān)聽一個(gè)輸入框在輸入文字后觸發(fā)的change事件,那么通過keyup事件,每次輸入文字后都會(huì)觸發(fā)change事件,頻繁觸發(fā)的情況會(huì)影響系統(tǒng)的性能。因此可以使用防抖來降低觸發(fā)頻率,即在用戶輸入結(jié)束或暫停時(shí),才會(huì)觸發(fā)change事件。

<script>
	const input1 = document.getElementById('input1')
	// 封裝的防抖函數(shù)
	function debounce(fn, delay = 500){
	    let timer = null
	    return function(){
	        if(timer){
	            clearTimeout(timer)
	        }
	        timer = setTimeout(()=>{
	            fn.apply(this, arguments)
	            timer = null
	        }, delay)
	    }
	}
	// 調(diào)用防抖函數(shù)
	input1.addEventListener('keyup', debounce(function(){
	    console.log(input1.value)
	}, 1000))
</script>

在輸入框中輸入內(nèi)容后 1s 才會(huì)觸發(fā)事件監(jiān)聽里面的打印功能。

2. 手寫節(jié)流throttle

與防抖在一段時(shí)間之后觸發(fā)事件不同,節(jié)流會(huì)以固定頻率觸發(fā)事件。下面介紹一個(gè)節(jié)流的應(yīng)用場(chǎng)景,假如在拖拽一個(gè)元素時(shí),需要隨時(shí)拿到該元素當(dāng)前被拖拽到的位置,如果直接使用drag事件,那么會(huì)頻繁觸發(fā)該事件,很容易卡頓。此時(shí)可以使用節(jié)流,即無論拖拽速度有多快,都可以設(shè)置固定的頻率觸發(fā)。

<body>
    <div id="div1" draggable="true">可拖拽</div>
    <script>
        const div1 = document.getElementById('div1')
        // 封裝節(jié)流函數(shù)
        function throttle(fn, delay = 500){
            let timer = null
            return function(){
                if(timer){
                    return
                }
                timer = setTimeout(()=>{
                    fn.apply(this, arguments)
                    timer = null
                }, delay)
            }
        }
        // 在事件監(jiān)聽里面調(diào)用節(jié)流函數(shù)
        div1.addEventListener('drag', throttle(function(e){
            console.log(e.offsetX, e.offsetY)
        }, 1000))
    </script>
</body>

隨著元素被拖拽,本來應(yīng)該迅速觸發(fā)拖拽事件打印元素的坐標(biāo)位置,然而使用節(jié)流將打印元素位置的函數(shù)封裝之后,就會(huì)以每隔1000ms的頻率,打印坐標(biāo)位置。

到此這篇關(guān)于JavaScript手寫防抖和節(jié)流函數(shù)代碼詳解的文章就介紹到這了,更多相關(guān)JS防抖和節(jié)流內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue之父組件向子組件傳值并改變子組件的樣式

    vue之父組件向子組件傳值并改變子組件的樣式

    這篇文章主要介紹了vue之父組件向子組件傳值并改變子組件的樣式,需要的朋友可以參考下
    2022-12-12
  • 在 React、Vue項(xiàng)目中使用SVG的方法

    在 React、Vue項(xiàng)目中使用SVG的方法

    本篇文章主要介紹了在 React、Vue項(xiàng)目中使用SVG的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • vue 里面使用axios 和封裝的示例代碼

    vue 里面使用axios 和封裝的示例代碼

    本篇文章主要介紹了vue 里面使用axios 和封裝的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-09-09
  • 使用Vue3實(shí)現(xiàn)一個(gè)穿梭框效果的示例代碼

    使用Vue3實(shí)現(xiàn)一個(gè)穿梭框效果的示例代碼

    這篇文章主要給大家介紹了如何使用?Vue3?實(shí)現(xiàn)一個(gè)穿梭框效果,當(dāng)選中數(shù)據(jù),并且點(diǎn)擊相對(duì)應(yīng)的方向箭頭時(shí),選中的數(shù)據(jù)會(huì)發(fā)送到對(duì)面,并且數(shù)據(jù)會(huì)保持正確的順序進(jìn)行排列,文中有詳細(xì)的代碼講解,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • Vue中的v-for循環(huán)key屬性注意事項(xiàng)小結(jié)

    Vue中的v-for循環(huán)key屬性注意事項(xiàng)小結(jié)

    這篇文章主要介紹了Vue中的v-for循環(huán)key屬性注意事項(xiàng)小結(jié),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • vue 清空input標(biāo)簽 中file的值操作

    vue 清空input標(biāo)簽 中file的值操作

    這篇文章主要介紹了vue 清空input標(biāo)簽 中file的值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue組件之事件總線和消息發(fā)布訂閱詳解

    Vue組件之事件總線和消息發(fā)布訂閱詳解

    這篇文章主要為大家詳細(xì)介紹了Vue組件之事件總線和消息發(fā)布訂閱,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • vue使用Office?Web實(shí)現(xiàn)線上文件預(yù)覽

    vue使用Office?Web實(shí)現(xiàn)線上文件預(yù)覽

    這篇文章主要為大家介紹了vue使用微軟的開發(fā)接口Office?Web,實(shí)現(xiàn)線上文件預(yù)覽,預(yù)覽word,excel,pptx,pdf文件,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue3如何實(shí)現(xiàn)在style中使用響應(yīng)式變量

    vue3如何實(shí)現(xiàn)在style中使用響應(yīng)式變量

    vue3已經(jīng)內(nèi)置了這個(gè)功能啦,可以在style中使用v-bind指令綁定script模塊中的響應(yīng)式變量,這篇文章我們來講講vue是如何實(shí)現(xiàn)在style中使用script模塊中的響應(yīng)式變量,感興趣的朋友一起看看吧
    2024-07-07
  • 使用vue-aplayer插件時(shí)出現(xiàn)的問題的解決

    使用vue-aplayer插件時(shí)出現(xiàn)的問題的解決

    這篇文章主要介紹了使用vue-aplayer插件時(shí)出現(xiàn)的問題的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03

最新評(píng)論

桐乡市| 绍兴县| 泾阳县| 开远市| 灵川县| 南丰县| 麻城市| 察哈| 新竹市| 卢氏县| 探索| 卫辉市| 遂宁市| 青铜峡市| 电白县| 汤阴县| 惠东县| 曲靖市| 抚宁县| 本溪市| 建德市| 肇州县| 朝阳县| 大新县| 峡江县| 正阳县| 滕州市| 闽清县| 靖江市| 宜兴市| 墨玉县| 鄱阳县| 凤山县| 永泰县| 天祝| 石阡县| 沁阳市| 宕昌县| 方城县| 峨山| 安吉县|