JavaScript permite manejar tareas en dos modos: sincrónico (en secuencia) y asincrónico (permitiendo ejecutar otras tareas en paralelo).
En el modo sincrónico, cada instrucción se ejecuta una tras otra, bloqueando la ejecución hasta que cada tarea se complete.
// Ejemplo de JavaScript Sincrónico
console.log("Tarea 1");
console.log("Tarea 2");
console.log("Tarea 3");
Resultado: "Tarea 1" se muestra primero, luego "Tarea 2" y finalmente "Tarea 3".
En el modo asincrónico, JavaScript puede ejecutar otras tareas mientras espera la finalización de operaciones más lentas, como solicitudes de red o temporizadores.
// Ejemplo de JavaScript Asincrónico con setTimeout
console.log("Inicio");
setTimeout(() => {
console.log("Tarea Asincrónica");
}, 2000);
console.log("Fin");
Resultado: "Inicio" y "Fin" se muestran antes que "Tarea Asincrónica".
JavaScript cuenta con varias formas de manejar la asincronía:
Las Promesas son objetos que representan el resultado de una operación asincrónica, con tres estados posibles: pendiente, cumplida y rechazada.
// Ejemplo de Promesa
let promesa = new Promise((resolve, reject) => {
setTimeout(() => resolve("Operación Completada"), 3000);
});
promesa.then(resultado => console.log(resultado));
Resultado: Después de 3 segundos, se muestra "Operación Completada".
async y await permiten escribir código asincrónico de manera más clara y estructurada, como si fuera sincrónico.
// Ejemplo de async/await
async function fetchData() {
let respuesta = await fetch('https://jsonplaceholder.typicode.com/posts');
let data = await respuesta.json();
console.log(data);
}
fetchData();
Resultado: Se espera la respuesta de la API antes de continuar con el código.
La programación sincrónica ejecuta tareas en secuencia, mientras que la asincrónica permite ejecutar otras tareas en paralelo. La asincronía es útil para operaciones de larga duración (peticiones a APIs, archivos) sin bloquear el flujo del programa.
JavaScript soporta tanto operaciones sincrónicas como asincrónicas, permitiendo un desarrollo flexible. La programación asincrónica es clave para crear aplicaciones interactivas y eficientes.