Lint and format src/runtime/internal/loop.js

pull/8569/head
S. Elliott Johnson 3 years ago
parent a6131de7af
commit e05c2c6225

@ -4,21 +4,20 @@ const tasks = new Set();
* @returns {void} * @returns {void}
*/ */
function run_tasks(now) { function run_tasks(now) {
tasks.forEach((task) => { tasks.forEach((task) => {
if (!task.c(now)) { if (!task.c(now)) {
tasks.delete(task); tasks.delete(task);
task.f(); task.f();
} }
}); });
if (tasks.size !== 0) if (tasks.size !== 0) raf(run_tasks);
raf(run_tasks);
} }
/** /**
* For testing purposes only! * For testing purposes only!
* @returns {void} * @returns {void}
*/ */
export function clear_loops() { export function clear_loops() {
tasks.clear(); tasks.clear();
} }
/** /**
* Creates a new task that runs on each raf frame * Creates a new task that runs on each raf frame
@ -27,24 +26,22 @@ export function clear_loops() {
* @returns {import("/Users/elliottjohnson/dev/sveltejs/svelte/loop.ts-to-jsdoc").Task} * @returns {import("/Users/elliottjohnson/dev/sveltejs/svelte/loop.ts-to-jsdoc").Task}
*/ */
export function loop(callback) { export function loop(callback) {
/** @type {TaskEntry} */ /** @type {TaskEntry} */
let task; let task;
if (tasks.size === 0) if (tasks.size === 0) raf(run_tasks);
raf(run_tasks); return {
return { promise: new Promise((fulfill) => {
promise: new Promise((fulfill) => { tasks.add((task = { c: callback, f: fulfill }));
tasks.add((task = { c: callback, f: fulfill })); }),
}), abort() {
abort() { tasks.delete(task);
tasks.delete(task); }
} };
};
} }
/** @typedef {(now: number) => boolean | void} TaskCallback */ /** @typedef {(now: number) => boolean | void} TaskCallback */
/** @typedef {{ c: TaskCallback; f: () => void }} TaskEntry */ /** @typedef {{ c: TaskCallback; f: () => void }} TaskEntry */
/** @typedef {Object} Task /** @typedef {Object} Task
* @property {Promise<void>} promise * @property {Promise<void>} promise
*/ */

Loading…
Cancel
Save