@cch137/format-utils
Version:
A collection of utility modules for formatting and processing data
27 lines (26 loc) • 712 B
JavaScript
export default async function sleep(ms, { signal } = {}) {
return new Promise((resolve, reject) => {
const timeout = setTimeout(resolve, ms);
if (signal) {
signal.addEventListener("abort", (e) => {
clearTimeout(timeout);
reject(signal.reason);
}, { once: true });
}
});
}
export function asyncDelay(func, durationMs) {
if (!durationMs)
return func;
return (async (...args) => {
const timer = sleep(durationMs, {});
try {
const result = await func(...args);
await timer;
return result;
}
catch (e) {
throw e;
}
});
}