摘要:今天解決了一個小程序中函數節流的問題小記以下。定義一個函數函數里面定義一個變量返回一個匿名函數匿名函數里面操作這個變量使用的時候調用返回的匿名函數,可以用一個變量來接受一個簡單的計數器代碼如下
今天解決了一個小程序中函數節流的問題 小記以下。
節流 lodash中是throttle()那個函數,改天可以去研究下源碼
下面是我自己實現的節流函數
getClickTagFunc(){ //定義一個標識,用來判斷是否繞過下面匿名函數的判斷 let canRun = true //這個函數在onLoad()的時候就被調用 //會返回一個匿名函數,這個匿名函數會被存在data里 return function(id, isLiked){ //匿名函數會在父作用域中去尋找canRun 如果是false 則不再執行下面的代碼 return 掉 if(!canRun) return false //繞過判斷之后 立即把父作用域內的值設為false 這個是關鍵 由于canRun是false 所以200毫秒之內這個函數再被調用 就會直接被 return 掉 canRun=false setTimeout(() => { dosomething...... //做完想做的事情之后 把canRun設置為true 這樣dosomething才會再次被調到。通常dosomething這里會是一個回調函數 canRun=true }, 200) } },
節流簡單點說就是稀釋函數被調用的頻率
然后還有一個就是閉包,之前一直不明白閉包要用在什么地方,今天算是初步弄明白了。可以讓局部變量不被重置,通常來說 這是需要一個全局變量的。但是通過一個閉包也能完成。
1.定義一個函數
2.函數里面定義一個變量
3.返回一個匿名函數
4.匿名函數里面操作這個變量
5.使用的時候調用返回的匿名函數,可以用一個變量來接受
一個簡單的計數器 代碼如下
function count(){ let x = 0 return function(){ console.log(x++) } } let run = count() setInterval(() => { run() }, 200);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105559.html
摘要:函數的節流當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法讓函數執行者冷靜下來后不一直抖動后,才真正執行。 1.函數的節流 當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法:聯系到水流的流量,我想讓你1s只流出多少水你就只能...
摘要:函數的節流當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法讓函數執行者冷靜下來后不一直抖動后,才真正執行。 1.函數的節流 當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法:聯系到水流的流量,我想讓你1s只流出多少水你就只能...
摘要:函數的節流當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法讓函數執行者冷靜下來后不一直抖動后,才真正執行。 1.函數的節流 當持續觸發事件時,保證一定時間段內只調用一次事件處理函數。也就是一個函數執行一次后,只有大于設定的執行周期后才會執行第二次。記憶法:聯系到水流的流量,我想讓你1s只流出多少水你就只能...
摘要:若時間差大于間隔時間,則立刻執行一次函數。不同點函數防抖,在一段連續操作結束后,處理回調,利用和實現。函數防抖關注一定時間連續觸發的事件只在最后執行一次,而函數節流側重于一段時間內只執行一次。 原博客地址,歡迎star 函數防抖和節流 函數防抖和函數節流:優化高頻率執行js代碼的一種手段,js中的一些事件如瀏覽器的resize、scroll,鼠標的mousemove、mouseover...
閱讀 1669·2021-11-19 09:40
閱讀 2926·2021-09-24 10:27
閱讀 3215·2021-09-02 15:15
閱讀 1876·2019-08-30 15:54
閱讀 1202·2019-08-30 15:54
閱讀 1369·2019-08-30 13:12
閱讀 626·2019-08-28 18:05
閱讀 2794·2019-08-27 10:53