Skip to content

Instantly share code, notes, and snippets.

@rendfall
Created September 7, 2018 17:15
Show Gist options
  • Save rendfall/4147e371b7c23627ca0f9b7124b9f2b7 to your computer and use it in GitHub Desktop.
Save rendfall/4147e371b7c23627ca0f9b7124b9f2b7 to your computer and use it in GitHub Desktop.
Delayed event listener
function addDelayedEventListener($el, eventName, action) {
const listener = async function (event) {
$el.removeEventListener(eventName, listener);
$el.disabled = true;
await action.call(action, event);
$el.disabled = false;
addDelayedEventListener($el, eventName, action);
};
$el.addEventListener(eventName, listener);
}
// Example:
// const $button = document.getElementById('button');
// addDelayedEventListener($button, 'click', async () => {
// return new Promise((resolve) => {
// setTimeout(() => resolve(), 5000);
// });
// })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment