UNPKG

@web-atoms/core

Version:
27 lines (25 loc) 728 B
import { CancelToken } from "./types"; export default function sleep(timeInMS: number, ct?: CancelToken, throwOnCancel = true) { let token = 0; return new Promise<void>((resolve, reject) => { ct?.registerForCancel((reason) => { if (token) { clearTimeout(token); if (throwOnCancel) { reject(reason); } else { resolve(); } } }); if (ct?.cancelled) { if (throwOnCancel) { reject("cancelled"); } else { resolve(); } return; } token = setTimeout(resolve, timeInMS); }); }