@4players/odin-common
Version:
A collection of commonly used type definitions and utility functions across ODIN web projects
28 lines (27 loc) • 835 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sleep = sleep;
exports.abortableSleep = abortableSleep;
exports.nextTick = nextTick;
function sleep(ms, value) {
if (ms <= 0) {
return Promise.resolve(value);
}
return new Promise((resolve) => setTimeout(() => resolve(value), ms));
}
function abortableSleep(ms, signal) {
if (signal.aborted) {
return Promise.resolve('aborted');
}
return new Promise((resolve) => {
const onAbort = () => resolve('aborted');
signal.addEventListener('abort', onAbort, { once: true });
setTimeout(() => {
signal.removeEventListener('abort', onAbort);
resolve(undefined);
}, ms);
});
}
function nextTick() {
return new Promise((resolve) => setTimeout(resolve, 0));
}