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

157
Vistas
¿Cuándo obtiene sus parámetros la función de devolución de llamada setTimeOut?

Estoy un poco confundido sobre cómo funciona setTimeOut: ¿por qué la función de devolución de llamada no obtuvo los valores que necesitaba cuando se invocó, pero los obtuvo desde la parte inferior del script?

Esperaba que imprimiera 5 y no 7..

Qué me estoy perdiendo ?

cualquier ayuda es apreciada, gracias!

 let foo = () => { console.log(x); }; let x = 5; setTimeout(foo, 0); //7 for (let i = 0; i < 10000000000; i++) {} //just to waste some time because the timeOut is actually 4ms x = 7;

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La función de devolución de llamada de setTimeout no se ejecuta hasta que la pila de llamadas esté vacía y la pila de llamadas no estará vacía hasta que se complete la ejecución de su código javascript síncrono.

Como la última declaración sobrescribe el valor de x , cuando se invoca la función de devolución de llamada de setTimeout , registra el valor más reciente, es decir, 7.

Parece que está esperando que se ejecute la función de devolución de llamada de setTimeout mientras se ejecuta el bucle for PERO no es así como funciona Javascript.

Una vez que el temporizador de setTimeout expira, la función de devolución de llamada de setTimeout se pone en cola en la cola de tareas. Desde la cola de tareas, el bucle de eventos enviará esta devolución de llamada a la pila de llamadas, PERO la función de devolución de llamada no se enviará a la pila de llamadas hasta que no se esté ejecutando ningún otro código javascript, es decir, la pila de llamadas esté vacía .

No importa cuánto tarde en finalizar la ejecución del script síncrono; no se ejecutará ninguna devolución de llamada programada hasta que finalice la ejecución del script síncrono.

Tenga en cuenta que todo su código se ejecuta en un solo hilo .

También tenga en cuenta que el número de milisegundos pasados a setTimeout NO es el tiempo exacto después del cual se ejecutará la función de devolución de llamada; es el tiempo mínimo después del cual se invocará la función de devolución de llamada.

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