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

275
Visualizações
¿Por qué es la ejecución suspendida del contexto en el modelo eventloop?

Dando el código al instante:

 setTimeout(() => console.log("next macro")); /// next macro Promise.resolve().then(() => gen.next()) /// microtask inside, #2 const gen = (function*(){ console.log("Hello"); yield; /// #3 console.log("World"); })(); gen.next(); console.log("main script has been ended"); /// #1

Como saben, los generadores se pueden suspender. Entonces, más adelante podemos volver a la función de generador cuando algún código invoque cierto código relacionado con el generador.

Este código tiene 2 macrotareas y 1 microtarea. Usted sabe que eventloop no ejecutará microtareas hasta que la macrotarea no haya terminado. Ya que cuando la macrotarea habrá terminado #1, entonces la microtarea estará activa #2 y exactamente el código dentro de esta microtarea nos devuelve a la función generadora #3, y habremos ejecutado console.log("World").

Entonces mi pregunta es: ¿por cuál es el código que ejecuta el código del generador, reanuda y restaura el contexto de ejecución del generador? ¿Es una tarea macro o micro dentro del bucle de eventos cuando lo invocamos dentro de una tarea micro? ¿El contexto de ejecución restaurado del generador es una microtarea, cuando lo estamos ejecutando?

PD Es posible que no entienda porque no sé cómo expresar mi pensamiento correctamente.

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

0

¿Por cuál es el código que ejecuta el código del generador, reanuda y restaura el contexto de ejecución del generador? ¿Es una tarea macro o micro dentro del bucle de eventos cuando lo invocamos dentro de una tarea micro?

Se ejecuta cada vez que se llama a next() en el generador. Si esa llamada ocurre como parte de una tarea de macro, sigue siendo parte de esa tarea de macro. Si esa llamada ocurre como parte de una microtarea, sigue siendo parte de esa microtarea. De hecho, la pila de llamadas aumentó al reanudar el código del generador y vuelve al código que lo reanudó (como con next() ).

Dado que en su ejemplo llama a next() tanto en el código síncrono como en then devolución de llamada, primero se ejecuta como parte de la macro tarea y luego como parte de una micro tarea. En ese sentido, no es diferente a hacer una llamada de función.

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