UNPKG

ix

Version:

The Interactive Extensions for JavaScript

31 lines (25 loc) 652 B
import { AbortError } from '../aborterror.js'; export function sleep(dueTime: number, signal?: AbortSignal) { return new Promise<void>((resolve, reject) => { if (signal && signal.aborted) { reject(new AbortError()); } const id = setTimeout(() => { if (signal) { signal.removeEventListener('abort', onAbort); if (signal.aborted) { onAbort(); return; } } resolve(); }, dueTime); if (signal) { signal.addEventListener('abort', onAbort, { once: true }); } function onAbort() { clearTimeout(id); reject(new AbortError()); } }); }