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) {
|
||||
return Object.prototype.toString.call(obj) === '[object Date]';
|
||||
}
|
Loading…
Reference in new issue