UNPKG

@benev/slate

Version:
37 lines 1.04 kB
export function debounce(delay, action) { let latestArgs; let timeout; let waitingQueue = []; function reset() { latestArgs = []; if (timeout) clearTimeout(timeout); timeout = undefined; waitingQueue = []; } reset(); return ((...args) => { latestArgs = args; if (timeout) clearTimeout(timeout); const promise = new Promise((resolve, reject) => { waitingQueue.push({ resolve, reject }); }); timeout = setTimeout(() => { Promise.resolve() .then(() => action(...latestArgs)) .then(r => { for (const { resolve } of waitingQueue) resolve(r); reset(); }) .catch(err => { for (const { reject } of waitingQueue) reject(err); reset(); }); }, delay); return promise; }); } //# sourceMappingURL=debounce.js.map