UNPKG

hd-utils

Version:

A handy utils for modern JS developers

26 lines (25 loc) 709 B
export default function debouncePromise(callback, wait) { let state = undefined; return (...args) => { if (!state) { state = {}; state.promise = new Promise((resolve, reject) => { state.resolve = resolve; state.reject = reject; }); } clearTimeout(state.timeout); state.latestArgs = args; state.timeout = setTimeout(() => { const s = state; state = undefined; try { s.resolve(callback(...s.latestArgs)); } catch (e) { s.reject(e); } }, wait); return state.promise; }; }