摘要:函數節流是確保函數特定的時間內至多執行一次。是否節流的開關通過一個閉包來保持對每次函數執行的時間戳的引用立即執行,跳過節流暫停節流恢復節流使用實例
函數節流:是確保函數特定的時間內至多執行一次。
如js滾動事件非常頻繁,稍微滾動一下就會觸發許多次,如果頻繁觸發的滾動,每一次都去檢查是否到頁面底部了再次造成了浪費。于是設置一個開關,一次只能有一個觸發執行,并對執行設置計時一段時間再執行,執行完畢之后再解鎖。這就是函數節流。
實現思路:通過內部使用閉包來緩存上次觸發函數的時間戳,然后檢驗本次函數執行時的時間戳和上次緩存的時間戳之差是否小于傳入的時間值參數。
const restrictFn = (fn, wait) => { let stime = 0, etime; let isPause = false;//是否節流的開關 function result() {//通過一個閉包來保持對每次函數執行的時間戳的引用 etime = Date.now(); if (etime - stime < wait && isPause === false) { return; } else { fn() } stime = etime; } result.flash = function () {//立即執行,跳過節流 fn() } result.pause = function () {//暫停節流 isPause = true; } result.resume = function () {//恢復節流 isPause = false; } return result; }
使用實例:
function print() { console.log("print something") } let restrictedPrint = restrictFn(print,1000);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94620.html
摘要:目的都是為了降低回調函數執行頻率,節省計算機資源,優化性能,提升用戶體驗。函數防抖事件頻繁觸發的情況下,只有經過足夠的空閑時間,才執行代碼一次。 函數節流和函數防抖的對比分析 一、前言 前端開發中,函數節流(throttle) 和 函數防抖(debounce) 作為常用的性能優化方法,兩者都是用于優化高頻率執行 js 代碼的手段,那具體它們有什么異同點呢?有對這兩個概念不太了解的小伙伴...
摘要:主要實現思路就是通過定時器,通過設置延時時間,在第一次調用時,創建定時器,寫入需要執行的函數。如果這時前一個定時器暫未執行,則將其替換為新的定時器。 JS中的函數節流 一、什么是函數節流(throttle) 概念:限制一個函數在一定時間內只能執行一次。 舉個栗子,坐火車或地鐵,過安檢的時候,在一定時間(例如10秒)內,只允許一個乘客通過安檢入口,以配合安檢人員完成安檢工作。上例中,每1...
摘要:若時間差大于間隔時間,則立刻執行一次函數。不同點函數防抖,在一段連續操作結束后,處理回調,利用和實現。函數防抖關注一定時間連續觸發的事件只在最后執行一次,而函數節流側重于一段時間內只執行一次。 原博客地址,歡迎star 函數防抖和節流 函數防抖和函數節流:優化高頻率執行js代碼的一種手段,js中的一些事件如瀏覽器的resize、scroll,鼠標的mousemove、mouseover...
摘要:為什么需要函數防抖和函數節流在瀏覽器中某些計算和處理要比其他的昂貴很多。函數防抖如果一個事件被頻繁觸發多次,并且觸發的時間間隔過短,則防抖函數可以使得對應的事件處理函數只執行最后觸發的一次。函數防抖可以把多個順序的調用合并成一次。 1.為什么需要函數防抖和函數節流? 在瀏覽器中某些計算和處理要比其他的昂貴很多。例如DOM操作比起非DOM交互需要更多的內存和CPU占用時間。連續嘗試進行...
閱讀 810·2021-11-22 15:25
閱讀 1408·2021-09-08 09:45
閱讀 1685·2021-09-02 09:46
閱讀 1299·2019-08-30 15:56
閱讀 1528·2019-08-29 15:14
閱讀 1159·2019-08-29 13:06
閱讀 2010·2019-08-29 12:34
閱讀 1400·2019-08-26 12:14