Javascript Throttle Debounce
生活随笔
收集整理的這篇文章主要介紹了
Javascript Throttle Debounce
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Throttle
無視一定時間內所有的調用,適合在發生頻度比較高的,處理比較重的時候使用。
var throttle = function (func, threshold, alt) {var last = Date.now();threshold = threshold || 100;return function () {var now = Date.now();if (now - last < threshold) {if (alt) {alt.apply(this, arguments);}return;}last = now;func.apply(this, arguments);}; };Debounce
一定間隔內沒有調用時,才開始執行被調用方法。
var debounce = function (func, threshold, execASAP) {var timeout = null;threshold = threshold || 100;return function () {var self = this;var args = arguments;var delayed = function () {if (!execASAP) {func.apply(self, args);}timeout = null;};if (timeout) {clearTimeout(timeout);} else if (execASAP) {func.apply(self, args);}timeout = setTimeout(delayed, threshold);}; };
Test
var test = function (wrapper, threshold) {var log = function () {console.log(Date.now() - start);};var wrapperedFunc = wrapper(log, threshold);var start = Date.now();var arr = [];for (var i = 0; i < 10; i++) {arr.push(wrapperedFunc);}while(i > 0) {var random = Math.random() * 1000;console.log('index: ' + i);console.log('random: ' + random);setTimeout(arr[--i], random);}
};test(debounce, 1000);
test(throttle, 1000);
轉載于:https://www.cnblogs.com/betarabbit/archive/2013/03/19/2967190.html
總結
以上是生活随笔為你收集整理的Javascript Throttle Debounce的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt/Qte/Qtopia三者的区别
- 下一篇: 51CTO 新人报道