blob: ae751f8650a0859b30ba0b837275754dfb467d14 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
export const sleep = (ms: number, signal?: AbortSignal): Promise<void> =>
new Promise((resolve, reject) => {
if (signal?.aborted) {
reject(signal.reason ?? new Error("aborted"));
return;
}
const onAbort = (): void => {
clearTimeout(timer);
reject(signal?.reason ?? new Error("aborted"));
};
const timer = setTimeout(() => {
signal?.removeEventListener("abort", onAbort);
resolve();
}, ms);
signal?.addEventListener("abort", onAbort, { once: true });
});
|