函數的節(jié)流與防抖

概念
函數的節(jié)流與防抖是優(yōu)化JavaScript的高頻率執(zhí)行的一種手段亥鸠。

  1. 節(jié)流
    函數的節(jié)流應用于一些函數高頻率的場景盖桥,多數在監(jiān)聽頁面元素一直觸發(fā)的事件。例如高頻率觸發(fā)的滾動事件。
    來看看下面監(jiān)聽滾動事件的例子:
let canRun = true;
document.getElementById('scroll').onscroll = function () {
    if (canRun) return;
    canRun = false;
    setTimeout(function () {
      console.log('do something');
      canRun = true;
    }, 300)
  }

首先定義一個變量(函數運行的開關)齿税;
每次在函數運行的時候檢測開關(判斷符合運行條件)牵舱;
符合條件利用setTimeout運行行數芜壁;
最后窟蓝,等setTimeout里面的方法執(zhí)行完畢雇卷,把執(zhí)行條件canRun = true,允許下次執(zhí)行;

  1. 防抖
    防抖函數通常運用在表單驗證中调榄。在驗證的過程中往往是等待用戶輸入完畢后再進行驗證今穿。需要檢查格式是否正確拔创。如果不正確在進行錯誤提示立倍。下面我們還是用滾動的例子來看看:
let timer = false;
document.getElementById('scroll').onscroll = function () {
  clearTimeout(timer);
  timer = setTimeout(function () {
      console.log('do something');
  }, 300)
}

首先先定義一個標記君珠;
在執(zhí)行函數的過程中材部,先會清理一遍timer;
然后在定義一個timer;在這里利用setTimeout做一個緩存棵磷。
這里巧妙的利用setTimeout做了一個緩存规丽,每次在運行函數的時候都會清理一遍timer松嘶,在利用setTimeout做一個函數緩存。避免了函數的多次運行。其實傲绣,用隊列的方式也可以做到這種效果。這里就不深入了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末攀唯,一起剝皮案震驚了整個濱河市曙强,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖雀瓢,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡篮奄,警方通過查閱死者的電腦和手機割去,發(fā)現死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胁附,“玉大人州袒,你說我怎么就攤上這事菇存〖伲” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵才写,是天一觀的道長厨疙。 經常有香客問我洲守,道長,這世上最難降的妖魔是什么沾凄? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任梗醇,我火速辦了婚禮,結果婚禮上撒蟀,老公的妹妹穿的比我還像新娘叙谨。我一直安慰自己,他們只是感情好保屯,可當我...
    茶點故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布手负。 她就那樣靜靜地躺著,像睡著了一般姑尺。 火紅的嫁衣襯著肌膚如雪竟终。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天股缸,我揣著相機與錄音衡楞,去河邊找鬼。 笑死敦姻,一個胖子當著我的面吹牛瘾境,可吹牛的內容都是我干的。 我是一名探鬼主播镰惦,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼迷守,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了旺入?” 一聲冷哼從身側響起兑凿,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茵瘾,沒想到半個月后礼华,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡拗秘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年圣絮,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雕旨。...
    茶點故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡扮匠,死狀恐怖捧请,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情棒搜,我是刑警寧澤疹蛉,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站力麸,受9級特大地震影響可款,放射性物質發(fā)生泄漏。R本人自食惡果不足惜末盔,卻給世界環(huán)境...
    茶點故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一筑舅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧陨舱,春花似錦翠拣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至益缎,卻和暖如春谜慌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莺奔。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工欣范, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人令哟。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓恼琼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親屏富。 傳聞我的和親對象是個殘疾皇子晴竞,可洞房花燭夜當晚...
    茶點故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內容

  • 概念 函數的節(jié)流與防抖是優(yōu)化JavaScript的高頻率執(zhí)行的一種手段。 節(jié)流 函數的節(jié)流應用于一些函數高頻率的場...
    O8閱讀 171評論 0 0
  • 如果一個事件頻繁觸發(fā)多次狠半,并且兩次事件相隔事件比較短噩死,則防抖函數使得對應的處理事件只觸發(fā)一次。 ``` funct...
    悲傷逆流成河09閱讀 209評論 0 0
  • 函數節(jié)流場景 例如:實現一個原生的拖拽功能(如果不用H5 Drag和Drop API),我們就需要一路監(jiān)聽mous...
    凡凡的小web閱讀 774評論 0 0
  • 龍獅垸上狂歡日 笙歌樓外婉轉時 明月長街花爛漫 瑤臺凡世亮迷離 小哥掩耳鳴鞭炮 稚妹持燈唱兒詩 暖酒一壺人莫醉 冰...
    梅開如雪閱讀 419評論 42 28
  • 人間已有煙火色神年, 紅橙黃綠皆成行已维。 地氣漸熏池魚醒, 東風徐來蜇蟲驚已日。 青帝牽駒將折柳垛耳, 花仙挽袖正點櫻。 疾蹄可...
    點櫻閱讀 177評論 0 1