RotLenin

Untitled

Mar 28th, 2022
952
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function throttle(callback, wait, context) {
  2.   wait || (wait = 250);
  3.   var last,
  4.     deferTimer;
  5.   return function () {
  6.     var context1 = context || this;
  7.  
  8.     var now = +new Date,
  9.       args = arguments;
  10.     if (last && now < last + wait) {
  11.       clearTimeout(deferTimer);
  12.       deferTimer = setTimeout(function () {
  13.         last = now;
  14.         callback.apply(context1, args);
  15.       }, wait);
  16.     } else {
  17.       last = now;
  18.       callback.apply(context1, args);
  19.     }
  20.   };
  21. }
  22.  
  23. const someCalc = function(a) {
  24.   console.log(a + this.b)
  25. };
  26.  
  27. // затормозить функцию до одного раза в 1000 мс
  28. const f1000 = throttle(someCalc, 1000, {b: ' call'});
  29. f1000(1); // выведет 1 call
  30. f1000(2); // (тормозим, не прошло 1000 мс)
  31. f1000(3); // (тормозим, не прошло 1000 мс)
  32.  
  33. // когда пройдёт 1000 мс...
  34. // выведет 3 call, промежуточное значение 2 call игнорируется
Advertisement
Add Comment
Please, Sign In to add comment