15 lines
416 B
Plaintext
15 lines
416 B
Plaintext
export function promiseTimeout<T>(
|
|
promise: Promise<T>,
|
|
timeoutMs: number,
|
|
): Promise<T | null> {
|
|
let timeoutId: ReturnType<typeof setTimeout>;
|
|
const timeoutPromise: Promise<null> = new Promise(resolve => {
|
|
timeoutId = setTimeout(() => resolve(null), timeoutMs);
|
|
});
|
|
|
|
return Promise.race([promise, timeoutPromise]).then((result: T | null) => {
|
|
clearTimeout(timeoutId);
|
|
return result;
|
|
});
|
|
}
|