Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda