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

267
Visualizações
Orden de ejecución en javascript

En el código a continuación, el retraso para 2 es de 0 segundos, entonces, ¿por qué genera 2 después de 3 y no antes?

 (function() { console.log(1); setTimeout(function(){console.log(2)}, 0); console.log(3); })();

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Ejecutará en la siguiente materia:

1 3 2

setTimeout se implementa de una manera que debe ejecutarse después de un retraso mínimo dado, y una vez que el hilo del navegador está libre para ejecutarlo. entonces, por ejemplo, si especifica un valor de 0 para el parámetro de retraso y cree que se ejecutará "inmediatamente", no lo hará. se ejecutará, con mayor precisión, en el próximo ciclo de eventos (que es parte del ciclo de eventos, modelo de concurrencia que es responsable de ejecutar el código).

Por lo tanto, la impresión de 1 y 3 en realidad se enviará a la pila de llamadas y se ejecutará de inmediato, ya que la función de devolución de llamada setTimeout solo estará disponible para extraerse de la cola de eventos y seleccionarse en el siguiente ciclo de eventos.

Lea el motivo de los retrasos más largos de lo especificado: https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#reasons_for_delays_longer_than_specified

Más información sobre el bucle de eventos de JS: https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop

about 4 years ago · Juan Pablo Isaza Relatório

0

setTimeout() no retrasa todo lo que se llama después; sólo retrasa la función interior. Por lo tanto, inicia un temporizador para console.log(2) , continúa con el código restante, console.log(3) , y luego ejecuta la función de tiempo de espera cuando se agota el temporizador.

about 4 years ago · Juan Pablo Isaza Relatório

0

Esta declaración de función anónima autoinvocada

 function (function() { console.log(1); setTimeout(function(){console.log(2)}, 0); console.log(3); })();

es lo mismo que si hubieras escrito

 console.log(1); setTimeout( console.log, 0, 2); console.log(3);

y el orden de los registros será el mismo, ya sea envuelto o desenvuelto en una función cronometrada anónima, porque se resolverá durante el tiempo de ejecución , mientras que la declaración setTimeout es un programa y tendrá que esperar hasta que el programa comience a ejecutarse. Y será después de que JITC haya terminado de compilar su código.

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