💫 Update: Add Helpers.promiseWithTimeout

This commit is contained in:
Dominic Go 2022-06-17 20:19:32 +08:00
parent cb2f03af6c
commit 69df00609c

View File

@ -24,6 +24,20 @@ export function timeout(ms: Number) {
});
};
/** 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]);
};
export function pad(num: number | string, places = 2){
return String(num).padStart(places, '0');
};