為提升約玩原始碼的系統效能,需要做好節流和防抖
防抖
export function debounce(fn, wait) { let timer = null; return function () { const context = this const args = arguments if (timer) { clearTimeout(timer); timer = null; } timer = setTimeout(function () { fn.apply(context, args) }, wait) } }
//模擬一段ajax請求 function ajax(content) { console.log('ajax request ' + content) } function debounce(fun, delay) { return function (args) { // 清除定時器,id是上一次呼叫 setTimeout 時返回的 id clearTimeout(fun.id) fun.id = setTimeout(() => { fun.call(this, args) }, delay) } } // 建立防抖 ajax介面請求 500 延遲時間 let debounceAjax = debounce(ajax, 500) let inputb = document.getElementById('debounce') inputb.addEventListener('keyup', function (e) { debounceAjax(e.target.value) })
節流
export function throttle(fn, gapTime) { let _lastTime = null; return function () { // + new Date() 將時間轉換成秒 // + 將元素轉換為 Number 型別 let _nowTime = + new Date() if (_nowTime - _lastTime > gapTime || !_lastTime) { fn(); _lastTime = _nowTime } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69996194/viewspace-2839617/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- UnderScore原始碼看防抖和節流原始碼
- 做好陪玩系統原始碼的前端效能優化,提升系統效能原始碼前端優化
- 遊戲陪玩原始碼開發,正確認識節流和防抖遊戲原始碼
- 效能優化之防抖和節流優化
- 防抖和節流
- 影片直播原始碼,js實現節流和防抖原始碼JS
- js防抖和節流JS
- 函式的防抖和節流函式
- 從lodash原始碼學習節流與防抖原始碼
- 函式防抖和節流函式
- 防抖和節流原理分析
- 函式節流和防抖函式
- js 函式防抖和節流JS函式
- js防抖 和節流函式JS函式
- 前端效能最佳化|什麼是防抖和節流?前端
- js函式中的節流和防抖JS函式
- 節流防抖封裝封裝
- JavaScript專題系列-防抖和節流JavaScript
- 函式防抖和函式節流函式
- 固定表頭和首列,防抖節流
- 前端效能最佳化---防抖與節流--02前端
- 函式的防抖與節流函式
- js函式防抖debounce和節流throttleJS函式
- 防抖動處理和節流 小技巧
- JS函式節流和函式防抖JS函式
- JS簡單實現防抖和節流JS
- 蝦扯蛋之函式防抖和節流函式
- 例項解析防抖動和節流閥
- JavaScript之節流與防抖JavaScript
- 筆記-JavaScript[節流][防抖]筆記JavaScript
- 防抖和節流的應用場景和實現
- 前端都應該要掌握的防抖和節流前端
- 淺談JavaScript的防抖與節流JavaScript
- 聊天室原始碼開發中防抖節流的簡單實現原始碼
- JavaScript淺析 -- 定時器和節流防抖JavaScript定時器
- 前端效能優化-圖片懶載入(防抖、節流)前端優化
- JavaScript中函式防抖、節流JavaScript函式
- 當Flutter遇到節流與防抖Flutter