From ec41e91388c6afa04c8580cb1f11d63cd2f27cc6 Mon Sep 17 00:00:00 2001 From: Sipachev Igor Date: Tue, 24 Jan 2023 19:00:44 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20de?= =?UTF-8?q?bouncing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/debouncing.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 api/debouncing.ts 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); + }) +}