Gumanitariy

Троттлинг

Apr 1st, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Создайте функцию дросселирование (тротлинга) — вызов функции callback производится не чаще,  чем в time раз
  3.  * Исправьте проблему с таймером: должны выводиться числа от 0 до 9.
  4.  * Доп. задание: предложите несколько вариантов решения.
  5.  */
  6. function throttle(time, callback) {
  7.     let callbackArgs = null;
  8.     let timeout = false;
  9.  
  10.     const waitThenDo = () => {
  11.         callback.apply(this, callbackArgs);
  12.         timeout = false;
  13.     };
  14.  
  15.     return function() {
  16.         if (!timeout) {
  17.             callbackArgs = arguments;
  18.             timeout = true;
  19.             setTimeout(waitThenDo, time);
  20.         }
  21.     }
  22. }
  23.  
  24.  
  25. module.exports = { throttle };
Advertisement
Add Comment
Please, Sign In to add comment