annotations-design-patterns
    Preparing search index...

    Function Semaphore

    • Limita a maxConcurrent las ejecuciones simultáneas del método asíncrono en la misma instancia (patrón Bulkhead); las llamadas que exceden el límite esperan en cola FIFO. Generaliza @Mutex (que equivale a Semaphore(1)). Un fallo libera el hueco con normalidad.

      Parameters

      • maxConcurrent: number

      Returns <This, Args extends unknown[], Return>(
          target: (this: This, ...args: Args) => Promise<Return>,
          context: ClassMethodDecoratorContext<
              This,
              (this: This, ...args: Args) => Promise<Return>,
          >,
      ) => (this: This, ...args: Args) => Promise<Return>

      class Downloader {
      @Semaphore(3) // máximo 3 descargas a la vez
      async download(url: string): Promise<Blob> { ... }
      }