|
|
|
|
@ -10,8 +10,7 @@ function run_tasks(now) {
|
|
|
|
|
task.f();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (tasks.size !== 0)
|
|
|
|
|
raf(run_tasks);
|
|
|
|
|
if (tasks.size !== 0) raf(run_tasks);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* For testing purposes only!
|
|
|
|
|
@ -29,8 +28,7 @@ export function clear_loops() {
|
|
|
|
|
export function loop(callback) {
|
|
|
|
|
/** @type {TaskEntry} */
|
|
|
|
|
let task;
|
|
|
|
|
if (tasks.size === 0)
|
|
|
|
|
raf(run_tasks);
|
|
|
|
|
if (tasks.size === 0) raf(run_tasks);
|
|
|
|
|
return {
|
|
|
|
|
promise: new Promise((fulfill) => {
|
|
|
|
|
tasks.add((task = { c: callback, f: fulfill }));
|
|
|
|
|
@ -41,7 +39,6 @@ export function loop(callback) {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** @typedef {(now: number) => boolean | void} TaskCallback */
|
|
|
|
|
/** @typedef {{ c: TaskCallback; f: () => void }} TaskEntry */
|
|
|
|
|
|
|
|
|
|
|