JavaScript: Sincrónico y Asincrónico

Introducción a la programación sincrónica y asincrónica

JavaScript permite manejar tareas en dos modos: sincrónico (en secuencia) y asincrónico (permitiendo ejecutar otras tareas en paralelo).

1. JavaScript Sincrónico

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".

2. JavaScript Asincrónico

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".

3. Técnicas de Programación Asincrónica

JavaScript cuenta con varias formas de manejar la asincronía:

4. Promesas

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".

5. async/await

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.

6. Diferencias entre Sincrónico y Asincrónico

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.

Conclusión

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.