rkgk/static/framework.js

31 lines
889 B
JavaScript

export function listen(...listenerSpecs) {
return new Promise((resolve) => {
let removeAllEventListeners;
let listeners = listenerSpecs.map(([element, eventName]) => {
let listener = (event) => {
removeAllEventListeners();
resolve(event);
};
element.addEventListener(eventName, listener);
return { element, eventName, func: listener };
});
removeAllEventListeners = () => {
for (let listener of listeners) {
listener.element.removeEventListener(listener.eventName, listener.func);
}
};
});
}
export function debounce(time, fn) {
let timeout = null;
return (...args) => {
if (timeout == null) {
fn(...args);
timeout = setTimeout(() => (timeout = null), time);
}
};
}