Repair task-reordering bug
This commit is contained in:
parent
b922a53d6a
commit
f8f643000a
|
@ -1,13 +1,18 @@
|
||||||
const LIMIT = 25000;
|
const LIMIT = 25000;
|
||||||
|
|
||||||
let taskCounter = 0;
|
let taskCounter = 0;
|
||||||
|
let delayedTasks: Array<() => void> = [];
|
||||||
export function queueTask(f: () => void) {
|
export function queueTask(f: () => void) {
|
||||||
taskCounter++;
|
taskCounter++;
|
||||||
if (taskCounter === LIMIT) {
|
if (taskCounter === LIMIT) {
|
||||||
setTimeout(() => taskCounter = 0, 0);
|
setTimeout(() => {
|
||||||
|
taskCounter = 0;
|
||||||
|
delayedTasks.forEach(queueMicrotask);
|
||||||
|
delayedTasks = [];
|
||||||
|
}, 0);
|
||||||
}
|
}
|
||||||
if (taskCounter >= LIMIT) {
|
if (taskCounter >= LIMIT) {
|
||||||
setTimeout(f, 0);
|
delayedTasks.push(f);
|
||||||
} else {
|
} else {
|
||||||
queueMicrotask(f);
|
queueMicrotask(f);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue