diff --git a/src/task.ts b/src/task.ts index c7fa299..9e619ec 100644 --- a/src/task.ts +++ b/src/task.ts @@ -1,13 +1,18 @@ const LIMIT = 25000; let taskCounter = 0; +let delayedTasks: Array<() => void> = []; export function queueTask(f: () => void) { taskCounter++; if (taskCounter === LIMIT) { - setTimeout(() => taskCounter = 0, 0); + setTimeout(() => { + taskCounter = 0; + delayedTasks.forEach(queueMicrotask); + delayedTasks = []; + }, 0); } if (taskCounter >= LIMIT) { - setTimeout(f, 0); + delayedTasks.push(f); } else { queueMicrotask(f); }