generated from mirzaev/pot
32 lines
716 B
JavaScript
32 lines
716 B
JavaScript
'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 }
|
|
})
|
|
);
|