UNPKG

@dominicstop/utils

Version:

Yet another event emitter written in typescript.

23 lines (21 loc) 761 B
/** wrapper for timeout that returns a promise */ export function timeout(ms: number) { return new Promise<void>(resolve => { const timeoutID = setTimeout(() => { clearTimeout(timeoutID); resolve(); }, ms); }); }; /** Wraps a promise that will reject if not not resolved in <ms> milliseconds */ export function promiseWithTimeout<T>(ms: number, promise: Promise<T>){ // Create a promise that rejects in <ms> milliseconds const timeoutPromise = new Promise<T>((_, reject) => { const timeoutID = setTimeout(() => { clearTimeout(timeoutID); reject(`Promise timed out in ${ms} ms.`) }, ms); }); // Returns a race between our timeout and the passed in promise return Promise.race([promise, timeoutPromise]); };