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

252
Vistas
¿Por qué se cae settimer/setInterval de JavaScript cuando hay un temporizador idéntico en la cola de tareas?

Estoy estudiando el temporizador JS y recientemente leí esta página https://johnresig.com/blog/how-javascript-timers-work/

Tenga en cuenta lo siguiente en este artículo.

Tenga en cuenta que mientras el controlador de clic del mouse se ejecuta, se ejecuta la devolución de llamada del primer intervalo. Al igual que con el temporizador, su controlador se pone en cola para su ejecución posterior. Sin embargo, tenga en cuenta que cuando el intervalo se activa nuevamente (cuando el controlador del temporizador se está ejecutando), esta vez se descarta la ejecución del controlador. Si pusiera en cola todas las devoluciones de llamada de intervalo cuando se está ejecutando un gran bloque de código, el resultado sería un montón de intervalos ejecutándose sin demora entre ellos, al finalizar. En cambio, los navegadores tienden a simplemente esperar hasta que no haya más controladores de intervalos en cola (para el intervalo en cuestión) antes de poner más en cola.

Y en Commnets, podemos ver a continuación:

Abhi (25 de febrero de 2008 a las 2:16 pm) Solo para asegurarme de que entendí, permítanme reiterar. Si un controlador de intervalo ya está en cola para su ejecución y antes de que tenga la oportunidad de ejecutar otro intervalo se activa, entonces se descartará el controlador del intervalo recién activado. Pero si un controlador de intervalos se está ejecutando y, mientras se ejecuta, se activa otro intervalo, el controlador recién activado se ejecutará inmediatamente después de que el controlador de intervalos que se está ejecutando actualmente termine de ejecutarse. Lo siento si sueno demasiado complicado.

John Resig (25 de febrero de 2008 a las 3:29 pm) @Abhi: Sí, eso es correcto.

Solo tenga en cuenta que en su segundo ejemplo "Pero si un controlador de intervalo se está ejecutando y mientras se ejecuta otro intervalo se dispara, el controlador recién activado se ejecutará inmediatamente después de que el controlador de intervalo que se está ejecutando actualmente termine de ejecutarse". puede que no sea lo siguiente absoluto en ejecutarse (ya que otro temporizador o evento puede estar ya en cola), pero ciertamente ocurrirá sin demora artificial.

Pero, sí, tiene razón en su suposición, y sí, esto es bastante complicado.

Si mi entendimiento es correcto, en JavaScript parece que se descarta cuando se presiona el mismo temporizador mientras el temporizador está en la cola de tareas (aún no se está ejecutando, solo esperando). ¿Puede alguien explicar por qué ocurre esto? Revisé la especificación HTML sobre el temporizador ( https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html ), pero no pude encontrar nada como esto.

Editar) Quiero saber si existe alguna condición, como que el navegador elija empujar o soltar la tarea en la cola de tareas

about 4 years ago · Juan Pablo Isaza
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