Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function throttle(callback, wait, context) {
- wait || (wait = 250);
- var last,
- deferTimer;
- return function () {
- var context1 = context || this;
- var now = +new Date,
- args = arguments;
- if (last && now < last + wait) {
- clearTimeout(deferTimer);
- deferTimer = setTimeout(function () {
- last = now;
- callback.apply(context1, args);
- }, wait);
- } else {
- last = now;
- callback.apply(context1, args);
- }
- };
- }
- const someCalc = function(a) {
- console.log(a + this.b)
- };
- // затормозить функцию до одного раза в 1000 мс
- const f1000 = throttle(someCalc, 1000, {b: ' call'});
- f1000(1); // выведет 1 call
- f1000(2); // (тормозим, не прошло 1000 мс)
- f1000(3); // (тормозим, не прошло 1000 мс)
- // когда пройдёт 1000 мс...
- // выведет 3 call, промежуточное значение 2 call игнорируется
Advertisement
Add Comment
Please, Sign In to add comment