mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-15 09:06:19 +08:00
37 lines
918 B
TypeScript
37 lines
918 B
TypeScript
export async function sleep(ms: number, signal?: AbortSignal): Promise<void> {
|
|
return new Promise(resolve => {
|
|
if (signal?.aborted) {
|
|
resolve();
|
|
return;
|
|
}
|
|
let resolved = false;
|
|
signal?.addEventListener('abort', () => {
|
|
if (!resolved) {
|
|
clearTimeout(timeId);
|
|
resolve();
|
|
}
|
|
});
|
|
|
|
const timeId = setTimeout(() => {
|
|
resolved = true;
|
|
resolve();
|
|
}, ms);
|
|
});
|
|
}
|
|
|
|
export function noop(_?: unknown) {
|
|
return;
|
|
}
|
|
|
|
export async function nextTick() {
|
|
// @ts-expect-error check window.scheduler
|
|
if ('scheduler' in window && 'yield' in window.scheduler) {
|
|
// @ts-expect-error check window.scheduler.yield
|
|
return window.scheduler.yield();
|
|
} else if (typeof requestIdleCallback !== 'undefined') {
|
|
return new Promise(resolve => requestIdleCallback(resolve));
|
|
} else {
|
|
return new Promise(resolve => setTimeout(resolve, 0));
|
|
}
|
|
}
|