16 lines
340 B
TypeScript
16 lines
340 B
TypeScript
export async function sleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
if (signal?.aborted) return;
|
|
await new Promise<void>((resolve) => {
|
|
const t = setTimeout(resolve, ms);
|
|
signal?.addEventListener(
|
|
"abort",
|
|
() => {
|
|
clearTimeout(t);
|
|
resolve();
|
|
},
|
|
{ once: true },
|
|
);
|
|
});
|
|
}
|
|
|