Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

379
Vistas
Creando un trabajo cron usando un ciclo while

Hay varias bibliotecas (especialmente para NodeJS y Javascript) que le permiten implementar trabajos cron y luego alojarlos en un servidor.

En esencia, los trabajos cron me parecen nada más que tareas repetitivas que se ejecutan en una hora/fecha específica en un día.

Por lo tanto, me preguntaba cuál es la diferencia entre estas bibliotecas y, digamos, un ciclo while personalizado. Por ejemplo en Javascript podríamos escribir:

 var keepRunning = true while (keepRunning) { setTimeout(function () { // call function to be executed when time constraint satisfied }, 5000); }

Mis preguntas son por lo tanto:

  • ¿Por qué usamos bibliotecas de trabajos cron? ¿Cuáles son los beneficios por encima de una función personalizada como la anterior?
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esto no funcionaría como cabría esperar:

 var keepRunning = true while (keepRunning) { setTimeout(function () { // call function to be executed when time constraint satisfied }, 5000); }

Ese código programará nuevas devoluciones de llamada de setTimeout lo más rápido posible mientras que keepRuning es verdadero, nunca deshaciendo la pila de llamadas y permitiendo que el bucle de eventos ejecute cualquiera de esas devoluciones de llamada. Es probable que consuma toda su memoria sin ejecutar el código programado ni una sola vez.

Lo que puedes hacer es algo como esto:

 var keepRunning = true; function run() { if (keepRunning) { // call function to be executed when time constraint satisfied setTimeout(run, 5000); } } setTimeout(run, 5000);

Si desea programar todas las devoluciones de llamada a la vez, puede hacer algo como esto:

 for (let i = 1; i <= 100; i++) { setTimeout(function () { // call function to be executed when time constraint satisfied }, 5000 * i); }

pero en este ejemplo, debe multiplicar el tiempo de espera por la variable de iteración para asegurarse de que no estén programados para ejecutarse al mismo tiempo, es decir, todavía están programados todos a la vez, pero luego se ejecutan en diferentes momentos.

Recuerde que JavaScript se ejecuta hasta el final y las devoluciones de llamada se ejecutan más tarde cuando la pila de llamadas se desenrolla. También es importante que los bucles for y while bloqueen la ejecución del bucle de eventos y no se pueda manejar ningún evento mientras se ejecuta el bucle.

over 4 years ago · Santiago Trujillo Denunciar

0

Cron maneja eventos específicos de tiempo mucho mejor que esto. Si quisiera que algo sucediera a las 9 a.m. todos los días, absolutamente tendría que usar Cron sobre algún método como este.

Cron mide el tiempo a partir de la época y es la forma más precisa de programar tareas. También me imagino que daría como resultado un mejor rendimiento que lo que sugieres.

¿Por qué NO usarías Cron?

over 4 years ago · Santiago Trujillo Denunciar

0

Una biblioteca es una colección de código útil. Esas colecciones suelen agrupar una cantidad importante de funciones, objetos, etc.

Su ejemplo fue solo una situación que tenía muy poca versatilidad. Las bibliotecas proporcionarían muchas más opciones para su bucle e irían más allá de solo abordar la tasa, sino también otros factores (dependiendo de la biblioteca específica a la que se refiera).

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda