diff --git "a/subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/01-Resumen.html" "b/subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/01-Resumen.html" new file mode 100644--- /dev/null +++ "b/subir/Curso de Fundamentos de JavaScript/06-Asincronía en JavaScript/01-Resumen.html" @@ -0,0 +1,129 @@ + + + + + + + Programación Síncrona y Asíncrona en JavaScript + + + +
+
+

Resumen

¿Cómo funciona JavaScript engine en el navegador?

+

Para entender cómo se maneja la ejecución del código JavaScript, es crucial comprender los componentes clave de su motor de ejecución en los navegadores: el Memory Heap y el Call Stack.

+

¿Qué es el Memory Heap?

+

El Memory Heap es el espacio donde se almacenan variables, funciones y objetos creados en JavaScript de forma aleatoria. Actúa como un almacén desorganizado donde el navegador gestiona la memoria de manera eficiente, permitiendo que las aplicaciones JavaScript funcionen sin problemas.

+

¿Cómo opera el Call Stack?

+

El Call Stack es una pila de tareas donde se registran las funciones que deben ejecutarse. Cuando se llama a una función, esta se agrega al Call Stack, ejecutándose de manera secuencial. Por ejemplo, si tienes una función holaMundo que llama a otra función miNombreEsDiego, el Call Stack ejecutará primero holaMundo y luego miNombreEsDiego, de forma simple y secuencial.

+

¿Qué es la programación síncrona en JavaScript?

+

En un entorno síncrono, JavaScript ejecuta una tarea a la vez en el Call Stack. Este enfoque puede llegar al temido Stack Overflow, una situación en la que el Call Stack se llena más allá de su capacidad y el navegador puede bloquearse. Para solventar este problema, el navegador debe cerrarse y abrirse nuevamente.

+

JavaScript, por naturaleza, funciona de forma síncrona, ejecutando cada línea de código en orden. Sin embargo, ciertos mecanismos permiten que JavaScript también pueda manejar tareas asincrónicamente.

+

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

+

¿Qué son las Web APIs?

+

Las Web APIs son herramientas que permiten que JavaScript ejecute tareas de manera asíncrona, proporcionando simultaneidad. Cuando una función de Web API se llama, se transfiere a la sección de las Web APIs y se ejecuta en paralelo al Call Stack. Una vez completada, la tarea se mueve al Queue.

+

¿Qué es el Event Loop?

+

El Event Loop interroga constantemente al Call Stack para verificar si está vacío. Cuando lo está, extrae una tarea del Queue y la transfiere al Call Stack para ejecutar. De este modo, tareas asincrónicas se integran ordenadamente en el flujo de ejecución.

+

Ejemplo de setTimeout en programación asíncrona

+

Considera un caso donde se utiliza setTimeout, una función que actúa asincrónicamente:

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

La secuencia de ejecución sería:

+
    +
  1. console.log(1) se ejecuta primero.
  2. +
  3. setTimeout() transfiere el console de 2 al Queue.
  4. +
  5. console.log(3) se ejecuta.
  6. +
  7. Una vez que el Call Stack está vacío, el event loop mueve el console de 2 del Queue al Call Stack.
  8. +
+

El resultado en consola sería: 1, 3 y 2. Aunque setTimeout parece ser instantáneo, su resultado aparece solo cuando el Stack está vacío.

+

¿Qué son las promesas en JavaScript?

+

Las promesas en JavaScript, al igual que las funciones de Web API, facilitan la programación asíncrona. Permiten que funciones específicas se ejecuten en paralelo al flujo principal, mejorando la eficiencia y evitando cuellos de botella en aplicaciones de alto rendimiento.

+

¿Cuál es el uso de async/await?

+

async y await son sintaxis modernas para manejar promesas, haciendo que el código asíncrono se vea y se lea como si fuera síncrono. Proporcionan una forma más clara y manejable de estructurar código asincrónico, especialmente en operaciones complejas o jerárquicas.

+

Con esta comprensión, puedes mejorar la forma en que escribes y gestionas tu código JavaScript, maximizando sus capacidades síncronas y asíncronas. ¡Adelante, sigue explorando y dominando el mundo del desarrollo con JavaScript!

+
+
+ + \ No newline at end of file