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

115
Visualizações
orden de ejecución en async/await

He estado estudiando funciones de promesas, espera y asíncronas. Mientras estaba en la etapa de aprender promesas, me topé con esto:

 async function async1(){ console.log('Async 1'); await async2(); // * console.log('AFter Async 1'); } async function async2(){ console.log('FROM async 2'); } async1(); console.log('Synchronous'); //**

Lo que resulta en:

 Async 1 FROM async 2 Synchronous AFter Async 1

¿Cómo salta el código de * a **? ¿Cómo se usa la microtarea aquí?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

No hay microtarea involucrada en la ejecución de la secuencia específica sobre la que preguntó (de * a ** ), aunque una microtarea se pone en cola durante esa secuencia (luego se ejecuta más tarde).

Una función async es síncrona hasta la primera await , excepción no detectada o return (incluido un retorno implícito donde la ejecución del código simplemente "cae" al final de la función). En ese punto, la función devuelve una promesa y la ejecución síncrona continúa desde el punto en el que se llamó a la función. Si fue una excepción, una return o una devolución implícita (no una await ), se pone en cola una microtarea para liquidar la promesa de la función (rechazándola en caso de excepción o cumpliéndola en caso de devolución).

He resaltado las partes sincrónicas de ese código en amarillo:

El código de la pregunta, con resaltado en: 1. las listas de parámetros vacíos de async1 y async2, la primera consola. inicie sesión en cada uno, y (en async1) la llamada a async2() pero no la espera en él; 2. Las dos declaraciones al final que no están en ninguna función.

En su ejemplo, cuando llama a async1 en la parte inferior, se ejecuta su parte sincrónica (registrando Async 1 y luego llamando a async2 , que registra FROM async 2 durante su parte sincrónica); habiendo ejecutado async2 y obtenido una promesa de él, async1 alcanza la await y devuelve su propia promesa; luego, la ejecución sincrónica continúa justo después de que la llamó, registrando Synchronous .

En este ejemplo particular, entre las partes * y ** , se pone en cola una microtarea para el cumplimiento de la promesa de async2 . Cuando finaliza la tarea que ejecuta el código síncrono en su ejemplo, esa microtarea se toma de la cola de microtareas y se ejecuta, y eso resuelve la promesa de async1 que la estaba esperando; El código de async1 continúa, hace su registro y luego regresa implícitamente, por lo que una microtarea se pone en cola para procesar esa liquidación (cumplimiento en este caso) y se recoge de la cola de microtareas una vez que la microtarea async2 de ejecutarse. Pero nada está esperando esa promesa, por lo que el acuerdo no tiene ningún efecto aparente.

about 4 years ago · Santiago Trujillo 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