@franelfers/queue
v1.0.0
Published
Paquete para gestionar la ejecución de funciones en cola con control de intervalo. Limita la ejecución de funciones a una por intervalo configurable (por defecto 1000ms).
Downloads
20
Readme
@franelfers/queue
Paquete para gestionar la ejecución de funciones en cola con control de intervalo. Limita la ejecución de funciones a una por intervalo configurable (por defecto 1000ms).
Setup
npm install @franelfers/queueUso
QueueExecution
Clase que gestiona una cola de ejecución con intervalos configurables entre cada ejecución.
import { QueueExecution } from "@franelfers/queue"
// Instanciar con intervalo por defecto (1000ms)
const queue = new QueueExecution()
// Or con intervalo personalizado
const queue = new QueueExecution(2000)
// Con logger personalizado
const queue = new QueueExecution(1000, customLogger)executeWhenAvailable(callback, timeout?)
Encola una función para ser ejecutada cuando esté disponible. Las funciones se ejecutan cronológicamente, cada una separada por el intervalo configurado.
Parámetros:
callback: () => T- Función a ejecutar cuando esté disponibletimeout?: number- Timeout en milisegundos (por defecto 30000ms)
Retorna: Promise<T> - Promise que resuelve con el resultado de la callback o rechaza si se alcanza el timeout
Ejemplo:
const queue = new QueueExecution(1000)
// Ejecutar una función
try {
const result = await queue.executeWhenAvailable(() => {
console.log("Executing now!")
return "done"
})
console.log(result) // "done"
} catch {
console.log("Timeout while waiting for execution")
}
// Múltiples ejecuciones en cola
const promise1 = queue.executeWhenAvailable(() => console.log("1"))
const promise2 = queue.executeWhenAvailable(() => console.log("2"))
const promise3 = queue.executeWhenAvailable(() => console.log("3"))
// Se ejecutarán en orden: 1, 2, 3 (cada una con 1000ms de separación)
await Promise.all([promise1, promise2, promise3])Características
- ✅ Ejecución secuencial de funciones con intervalo configurable
- ✅ Soporte para Promises y tipos genéricos
- ✅ Timeout configurable para cada ejecución
- ✅ Logging integrado de operaciones de cola
- ✅ Manejo automático de limpieza de timers
