函式節流throttle和debounce程式碼演示
下面分享一段程式碼例項,它能夠演示throttle和debounce的作用,進而也就能夠區分這兩者的區別。
underscore.js外掛封裝兩個效果,為了方便,我們就利用此外掛進行相關演示。
程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> p{ margin:20px 20px 0px; clear:both; } .meter{ margin:10px 20px; padding:5px; border:1px solid #ccc; border-radius:4px; font-family:sans-serif; display:block; float:left; clear:left; box-shadow:0px 1px 3px 0px rgba(0, 0, 0, 0.2); -webkit-touch-callout:none; -webkit-user-select:none; -khtml-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; } .meter:hover{ background:#ff8; cursor:pointer; } .meter li{ border:1px solid #ccc; background:#fff; width:25px; height:20px; text-align:center; padding-top:8px; float:left; border-radius:25px; margin-right:6px; display:inline-block; color:#ccc; } .meter li:last-child{ float:none; margin:0; } .meter li.on{ background:#2f2; box-shadow:inset 0px 1px 0px 2px rgba(0, 0, 0, 0.1); border:1px solid #777; color:#000; font-weight:bold; text-shadow:0px 1px #fff; } .meter1:after { content:"_.throttle()"; padding:0px 5px; } .meter2:after{ content:"_.debounce()"; padding:0px 5px; } .blink:after{ font-weight:bold; } </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script src="http://libs.baidu.com/underscore/1.3.3/underscore.js"></script> <script type="text/javascript"> $(function(){ function changeMeter(ev){ var $ul=$(ev.target).closest("ul"), numLi=$("li", $ul).length, $on=$("li.on", $ul), numOn = $on.length; if(numLi==numOn){ $on.removeClass("on"); } else{ if(numOn== 0){ $("li:first", $ul).addClass("on"); } else{ $("li.on:last", $ul).next().addClass("on"); } } } $(".meter1").on("click", _.throttle(changeMeter, 2000)); $(".meter2").on("click", _.debounce(changeMeter, 2000, true)); $(".meter").on("click",function(ev){ var $meter = $(ev.target).closest("ul"); $meter.addClass("blink"); setTimeout(function(){ $meter.removeClass("blink"); }, 50); }); }); </script> </head> <body> <ul class="meter meter1"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> </ul> <ul class="meter meter2"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> </ul> </body> </html>
相關文章
- js函式防抖debounce和節流throttleJS函式
- 函式防抖debounce與節流throttle函式
- 關於js節流函式throttle和防抖動debounceJS函式
- [JS效能優化]函式去抖(debounce)與函式節流(throttle)JS優化函式
- SAP UI5和Angular的函式防抖(Debounce)和函式節流(Throttle)實現原理介紹UIAngular函式
- JavaScript 節流函式 Throttle 詳解JavaScript函式
- 效能優化之節流函式---throttle優化函式
- 節流函式throttle是什麼鬼?函式
- 理解並優化函式節流Throttle優化函式
- JavaScript 高階系列之節流 [throttle] 與防抖 [debounce]JavaScript
- js之debounce和throttleJS
- throttle和debounce簡單實現
- 【進階 6-3 期】深入淺出節流函式 throttle函式
- 函式防抖和函式節流函式
- 每日原始碼分析 - lodash(debounce.js和throttle.js)原始碼JS
- JS函式節流和函式防抖JS函式
- 【譯】通過例子解釋 Debounce 和 Throttle
- JavaScript函式和方法區別演示程式碼JavaScript函式
- 函式防抖和節流函式
- 函式節流和防抖函式
- 函式節流函式
- js 函式防抖和節流JS函式
- 函式的防抖和節流函式
- js防抖 和節流函式JS函式
- 淺談js函式節流和函式防抖JS函式
- 前端效能優化之節流-throttle前端優化
- 一圖秒懂函式防抖和函式節流函式
- 輕鬆理解JS函式節流和函式防抖JS函式
- 函式節流與函式防抖函式
- 簡單介紹JS函式防抖和函式節流JS函式
- JavaScript 中函式節流和函式去抖的講解JavaScript函式
- Rxjs debounce 運算子在 SAP Spartacus 函式節流中的一個實際使用例子JS函式
- js函式中的節流和防抖JS函式
- 蝦扯蛋之函式防抖和節流函式
- 區分函式防抖&函式節流函式
- javascript函式防抖DebounceJavaScript函式
- 理解函式防抖Debounce函式
- 實現圖片懶載入(throttle, debounce)