diff --git a/api/debouncing.ts b/api/debouncing.ts new file mode 100644 index 0000000..13c42ca --- /dev/null +++ b/api/debouncing.ts @@ -0,0 +1,18 @@ +export const debouncing = async (time: number = 1000) => { + return new Promise((resolve, reject) => { + const timerId = setTimeout(() => { + resolve(true) + }, time) + const listener = (event: any) => { + if (event.detail === timerId) { + return + } + clearTimeout(timerId) + reject(new Error('locked!!!' + timerId)) + document.removeEventListener('debiuncing.clean', listener); + } + document.addEventListener('debiuncing.clean', listener) + const event = new CustomEvent('debiuncing.clean', { detail: timerId }); + document.dispatchEvent(event); + }) +}