mirror of https://github.com/sveltejs/svelte
parent
65dc6d693b
commit
d58996534d
@ -0,0 +1,38 @@
|
|||||||
|
const tasks = new Set();
|
||||||
|
let running = false;
|
||||||
|
|
||||||
|
function run_tasks() {
|
||||||
|
tasks.forEach(task => {
|
||||||
|
if (!task[0]()) {
|
||||||
|
tasks.delete(task);
|
||||||
|
task[1]();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
running = tasks.size > 0;
|
||||||
|
if (running) requestAnimationFrame(run_tasks);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function clear_loops() {
|
||||||
|
// for testing...
|
||||||
|
tasks.forEach(task => tasks.delete(task));
|
||||||
|
running = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function loop(fn) {
|
||||||
|
let task;
|
||||||
|
|
||||||
|
if (!running) {
|
||||||
|
running = true;
|
||||||
|
requestAnimationFrame(run_tasks);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
promise: new Promise(fulfil => {
|
||||||
|
tasks.add(task = [fn, fulfil]);
|
||||||
|
}),
|
||||||
|
abort() {
|
||||||
|
tasks.delete(task);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -1,36 +1,3 @@
|
|||||||
const tasks = new Set();
|
|
||||||
let running = false;
|
|
||||||
|
|
||||||
function run_tasks() {
|
|
||||||
tasks.forEach(task => {
|
|
||||||
if (!task[0]()) {
|
|
||||||
tasks.delete(task);
|
|
||||||
task[1]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
running = tasks.size > 0;
|
|
||||||
if (running) requestAnimationFrame(run_tasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function add_task(fn) {
|
|
||||||
let task;
|
|
||||||
|
|
||||||
if (!running) {
|
|
||||||
running = true;
|
|
||||||
requestAnimationFrame(run_tasks);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
promise: new Promise(fulfil => {
|
|
||||||
tasks.add(task = [fn, fulfil]);
|
|
||||||
}),
|
|
||||||
abort() {
|
|
||||||
tasks.delete(task);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export function is_date(obj) {
|
export function is_date(obj) {
|
||||||
return Object.prototype.toString.call(obj) === '[object Date]';
|
return Object.prototype.toString.call(obj) === '[object Date]';
|
||||||
}
|
}
|
Loading…
Reference in new issue