No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

¿Cómo funciona el JavaScript Engine?

27/27
Recursos

¿Cómo funciona la programación síncrona y asíncrona en JavaScript?

La comprensión de la programación en JavaScript, especialmente en cuanto a la programación síncrona y asíncrona, es crucial para cualquier programador que desee desarrollar aplicaciones web eficientes y optimizadas. JavaScript, como lenguaje interpretado por el navegador, tiene su propio motor (JavaScript Engine) que gestiona la ejecución del código. Vamos a adentrarnos en los conceptos fundamentales que permiten a JavaScript operar de manera sincronizada y asincronizada.

¿Qué es el memory heap y el call stack?

Antes de entrar en el funcionamiento síncrono y asíncrono, es esencial entender dos componentes clave del JavaScript Engine:

  1. Memory Heap: Este es el área de memoria donde se almacenan todas las variables, funciones y objetos creados en JavaScript. No tiene un orden específico, lo cual permite al motor de JavaScript acceder a estas variables según sea necesario.

  2. Call Stack: Es una estructura de datos en forma de pila (stack) utilizada para realizar un seguimiento de las llamadas a funciones en un programa. Permite que JavaScript ejecute funciones una por una, respetando el orden en que fueron llamadas. Por ejemplo, si se llama a la función holaMundo que a su vez llama a miNombreEsDiego, el “call stack” ejecutará holaMundo primero y, al finalizar, ejecutará miNombreEsDiego.

En el contexto de la programación síncrona, estas funciones se ejecutan una por una, es decir, una tarea a la vez. Esto puede llevarnos a lo que se conoce como Stack Overflow, que ocurre cuando el call stack se sobrecarga más allá de su capacidad máxima permitida.

¿Cómo se realiza la programación asíncrona en JavaScript?

Por defecto, JavaScript es síncrono, pero ciertas tareas pueden realizarse de manera asíncrona para mejorar el rendimiento del programa. Para esto, JavaScript utiliza otras herramientas del navegador.

Web API y cómo permite la asincronía

La Web API es un conjunto de APIs provistas por el navegador que facilita la ejecución asíncrona de ciertas funciones. Cuando una función asíncrona es llamada, esta se envía a la sección de Web API. Aquí, se ejecutan simultáneamente mientras otras funciones siguen procesándose en el call stack.

  • Web API: Maneja funciones asíncronas fuera del call stack. Por ejemplo, setTimeout es una función que usa Web API para retrasar la ejecución de una función.

  • Queue y Event Loop: Una vez que una función enviada a Web API termina su trabajo, se mueve a una sala de espera conocida como queue. El event loop monitorea constantemente el call stack y, cuando este está vacío, transfiere las tareas del queue al call stack para su ejecución.

Ejemplo de programación asíncrona en JavaScript

Analicemos un ejemplo común que usa setTimeout para demostrar el concepto:

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

Ejecución paso a paso:

  1. Se imprime 1 inmediatamente.
  2. setTimeout se llama, pero su ejecución se difiere y se maneja en la Web API.
  3. Se imprime 3 porque esta instrucción se ejecuta mientras el setTimeout espera.
  4. Una vez el call stack está vacío, el resultado del setTimeout ingresa al call stack desde el queue y se imprime 2.

¿Cómo las promesas y async/await transforman la ejecución asíncrona?

Las promesas y las palabras clave async/await son métodos más avanzados y comunes para manejar asincronía en JavaScript:

  • Promesas: Representan una operación que aún no se ha completado, pero se completará en el futuro. Facilitan la escritura de código asíncrono que es más claro y manejable.

  • Async/Await: Permite escribir código asíncrono que se lee como código síncrono, mejorando la comprensión y depuración del mismo.

La comprensión de estos mecanismos no solo mejora tus capacidades de programación, sino que también asegura que tus aplicaciones web se mantengan rápidas y responsivas. ¡Sigue explorando y practicando la escritura de código asíncrono para dominar completamente JavaScript!

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Este curso esta buggeado, nadie ve esta clase porque manda al examen en la clase anterior (la penultima) y por eso soy el primer comentario en 2 años que lleva este curso
Es una clase que se encuentra en el curso de Javascript