亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1. 手寫防抖debounce

首先介紹一個防抖的應用場景。假如需要監(jiān)聽一個輸入框在輸入文字后觸發(fā)的change事件,那么通過keyup事件,每次輸入文字后都會觸發(fā)change事件,頻繁觸發(fā)的情況會影響系統(tǒng)的性能。因此可以使用防抖來降低觸發(fā)頻率,即在用戶輸入結束或暫停時,才會觸發(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 才會觸發(fā)事件監(jiān)聽里面的打印功能。

2. 手寫節(jié)流throttle

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

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

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

相關文章

  • 關于單文件組件.vue的使用

    關于單文件組件.vue的使用

    這篇文章主要介紹了關于單文件組件.vue的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 探索Vue.js component內(nèi)容實現(xiàn)

    探索Vue.js component內(nèi)容實現(xiàn)

    這篇文章主要和大家一起探索Vue.js component內(nèi)容實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 手把手教學vue的路由權限問題

    手把手教學vue的路由權限問題

    這篇文章主要介紹了手把手教學vue的路由權限問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue3組件庫Shake抖動組件搭建過程詳解

    vue3組件庫Shake抖動組件搭建過程詳解

    這篇文章主要為大家介紹了vue3組件庫Shake抖動組件搭建過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • vue中關于confirm確認框的用法

    vue中關于confirm確認框的用法

    這篇文章主要介紹了vue中關于confirm確認框的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 詳解vue-router 命名路由和命名視圖

    詳解vue-router 命名路由和命名視圖

    這篇文章主要介紹了詳解vue-router 命名路由和命名視圖,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 在Vue3中使用provide和inject進行依賴注入的代碼詳解

    在Vue3中使用provide和inject進行依賴注入的代碼詳解

    在現(xiàn)代前端開發(fā)中,Vue.js已經(jīng)成為了非常流行的框架之一,它提供了極大的靈活性和可維護性,今天我們要探討的是Vue?3中的provide和inject功能,這是一種用于在組件樹中進行依賴注入的方法,需要的朋友可以參考下
    2024-06-06
  • TypeScript中集成Tween.js踩坑記錄

    TypeScript中集成Tween.js踩坑記錄

    這篇文章主要介紹了TypeScript中集成Tween.js踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • typescript中this報錯的解決

    typescript中this報錯的解決

    這篇文章主要介紹了typescript中this報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue項目中使用axios上傳圖片等文件操作

    vue項目中使用axios上傳圖片等文件操作

    axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端。這篇文章主要給大家介紹了vue項目中使用axios上傳圖片等文件操作,需要的朋友參考下吧
    2017-11-11

最新評論