Programación Síncrona y Asíncrona en JavaScript
Clase 27 de 27 • Curso de JavaScript: Manipulación del DOM
Contenido del curso
- 6

Atributos y Propiedades en HTML y su Manipulación con JavaScript
07:39 - 7

Modificar texto en HTML con JavaScript
04:50 - 8

Modificar Estilos CSS con JavaScript: Propiedad Style y ClassName
11:30 - 9

Uso de classList para Manipular Clases en Elementos HTML
07:38 - 10

Manipulación del DOM con innerHTML e InsertAdjacentHTML
09:47 - 11

Agregar elementos HTML sin reemplazar contenido existente
05:18 - 12

Creación y Manipulación de Elementos DOM con createElement
13:28 - 13

Eliminar Elementos del DOM con JavaScript: Métodos y Ejemplos
05:43 - 14

Clonación y Reemplazo de Elementos en JavaScript
12:47
- 15

Eventos y Flujo en Programación Web: Capturing y Bubbling
05:03 - 16

Manejo de Eventos en JavaScript: click, mouseOver y mouseOut
11:46 - 17

Manipulación de Eventos en JavaScript para Interacción de Elementos
07:35 - 18

Validación de Formularios con JavaScript: Prevenir Comportamiento por Defecto
10:06 - 19

Delegation Pattern en JavaScript: Mejora de Eventos Click en Listas
09:30
- 20

Creación de un Task Manager con Persistencia usando Local Storage
09:01 - 21

Interactividad en Botones de Tareas: Borrar y Editar en JavaScript
13:37 - 22

Persistencia de Datos con Local Storage en Tareas Web
15:17 - 23

Guardado y edición de tareas en local storage con JavaScript
10:59 - 24

Manejo de Errores en Local Storage para Tareas Dinámicas
03:24 - 25

Cambio de Tema Dinámico y Persistente en Aplicaciones Web
07:18 - 26

Creación de Páginas Web Dinámicas con JavaScript
01:28
¿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:
-
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.
-
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
holaMundoque a su vez llama amiNombreEsDiego, el “call stack” ejecutaráholaMundoprimero 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,
setTimeoutes 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:
- Se imprime 1 inmediatamente.
setTimeoutse llama, pero su ejecución se difiere y se maneja en la Web API.- Se imprime 3 porque esta instrucción se ejecuta mientras el
setTimeoutespera. - Una vez el call stack está vacío, el resultado del
setTimeoutingresa 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!