@rotomeca/utils - v7.0.3
    Preparing search index...

    Function retry

    • Tente d'exécuter fn jusqu'à attempts fois en cas d'échec.

      Entre chaque tentative, attend delay millisecondes. Si toutes les tentatives échouent, l'erreur de la dernière tentative est propagée. L'exécution peut être annulée à tout moment via un AbortSignal.

      Type Parameters

      • T

        Type de la valeur retournée par fn en cas de succès.

      Parameters

      • fn: () => Promise<T>

        Fonction asynchrone à exécuter, pouvant être réessayée.

      • attempts: uint

        Nombre maximum de tentatives (entier non signé).

      • delay: uint

        Délai en millisecondes entre chaque tentative (entier non signé).

      • Optionalsignal: AbortSignal

        Signal d'annulation optionnel. Si déclenché avant une tentative, lève immédiatement une Error('retry aborted').

      Returns Promise<T>

      Une Promise résolvant avec la valeur de fn dès qu'une tentative réussit.

      L'erreur de la dernière tentative si toutes ont échoué.

      Error('retry aborted') si le signal est annulé avant une tentative.

      const data = await retry(
      () => fetch('/api/data').then(r => r.json()),
      toUint(3), // 3 tentatives maximum
      toUint(500), // 500ms entre chaque tentative
      );
      // Avec annulation
      const controller = new AbortController();
      setTimeout(() => controller.abort(), 2000);

      const data = await retry(
      () => fetchSomething(),
      toUint(5),
      toUint(300),
      controller.signal,
      );