Comprendiendo JavaScript Síncrono y Asíncrono
JavaScript ejecuta una tarea a la vez. Esto se debe a que es un lenguaje de un solo hilo.
Para crear aplicaciones rápidas, debes conocer la diferencia entre el código síncrono y el asíncrono.
Ejecución Síncrona
El código se ejecuta línea por línea. Cada tarea espera a que la anterior termine.
Imagina una fila en un cajero automático. La segunda persona no puede usar la máquina hasta que la primera termine.
Si una tarea tarda mucho tiempo, todo el programa se detiene. Esto se llama bloqueo (blocking).
Ejecución Asíncrona
Las tareas se ejecutan de forma independiente. JavaScript inicia una tarea y pasa a la siguiente inmediatamente.
Imagina un restaurante. Pides la comida y luego hablas con tus amigos mientras esperas. No te quedas sentado sin hacer nada esperando a que llegue la comida.
El código asíncrono evita que tu aplicación se congele durante:
- solicitudes de API
- consultas a la base de datos
- lectura de archivos
- carga de imágenes
Tres formas de manejar el código asíncrono:
Callbacks Una función se ejecuta después de que una tarea específica se completa. Es como un repartidor llamándote cuando llega tu comida.
Promises Una promesa representa un resultado futuro. Permanece en un estado pendiente hasta que se resuelve (éxito) o se rechaza (error).
Async/Await Esto hace que el código asíncrono parezca código síncrono. Es fácil de leer. Utilizas
awaitpara pausar una función sin bloquear el resto de tu programa.
Cómo funciona internamente:
JavaScript utiliza un Event Loop para gestionar estas tareas.
- Call Stack: Realiza el seguimiento de tus funciones actuales.
- Web APIs: Gestiona tareas largas como temporizadores o peticiones (fetches).
- Callback Queue: Almacena las tareas completadas.
- Event Loop: Mueve las tareas de la cola a la pila cuando la pila está vacía.
Comparación:
Síncrono:
- Se ejecuta secuencialmente
- Bloquea el programa
- Simple de escribir
- Lento para tareas pesadas
Asíncrono:
- Se ejecuta de forma independiente
- No bloqueante
- Más complejo
- Eficiente para aplicaciones web
Dominar estos conceptos es la clave para utilizar React, Node.js y las APIs modernas.
Fuente: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Fuente: https://www.browserstack.com/guide/synchronous-vs-asynchronous-in-javascript Post completo: https://dev.to/annapoo/understanding-synchronous-and-asynchronous-javascript-5gea