5180 fichiers 38.5 Mo 0 téléchargements 182 vues mis à jour il y a 5 heures ui
nitro-v36-with-renderer-v36 / src / api / utils / createBootSteps.ts
createBootSteps.ts 787 o Télécharger le fichier
export type BootStepRunner = <T>(key: string, task: () => Promise<T>) => Promise<T>;

/**
 * Runs each boot step once and shares it. A step that failed is dropped, so the next login retries it
 * while the steps that finished stay done (they register handlers and listeners, and must not run twice).
 */
export const createBootSteps = (): BootStepRunner => {
    const steps = new Map<string, Promise<unknown>>();

    return <T,>(key: string, task: () => Promise<T>): Promise<T> => {
        const existing = steps.get(key) as Promise<T>;

        if (existing) return existing;

        const promise = task();

        steps.set(key, promise);
        promise.catch(() => {
            if (steps.get(key) === promise) steps.delete(key);
        });

        return promise;
    };
};
15Sujets
1Dépôts
20Membres
2En ligne
Profile
Inscrit
Dernière visite
Messages
0
Votes positifs
0
Votes négatifs
0

Nous utilisons des cookies pour assurer le bon fonctionnement du site et améliorer votre expérience. en savoir plus

Autoriser