api.js/src/data/loading.ts

35 lines
492 B
TypeScript

// Status
let loading = true;
// Queue
type Callback = () => void;
const queue: Callback[] = [];
/**
* Loaded: run queue
*/
export function loaded() {
loading = false;
// Run queue
let callback: Callback | undefined;
while ((callback = queue.shift())) {
try {
callback();
} catch (err) {
console.error(err);
}
}
}
/**
* Run when app is ready
*/
export function runWhenLoaded(callback: Callback) {
if (!loading) {
callback();
} else {
queue.push(callback);
}
}