'use strict'; /** * Демпфер * * @param {function} func Функция * @param {number} timeout Таймер (ms) * * @return {void} */ function damper(func, timeout = 300) { // Инициализация таймера let timer; return (...args) => { // Деинициализация таймера clearTimeout(timer); // Вызов функции (вход в рекурсию) timer = setTimeout(() => { func.apply(this, args); }, timeout); }; } // Вызов события "Инициализирован демпфер" document.dispatchEvent( new CustomEvent("damper.initialized", { detail: { damper } }) );