Modelo de ejecución donde las tareas se ejecutan de manera secuencial.
Esperando a que una tarea termine antes de comenzar la siguiente. Común en operaciones de entrada/salida.
// Código SÍNCRONO - bloquea hasta terminar // ❌ Bloquea el hilo principal const data = fs.readFileSync('archivo.txt', 'utf-8'); console.log(data); console.log('Esto espera a que termine la lectura'); // Código ASÍNCRONO - no bloquea // ✅ Con callbacks fs.readFile('archivo.txt', 'utf-8', (err, data) => { console.log(data); }); console.log('Esto se ejecuta inmediatamente'); // ✅ Con Promises fs.promises.readFile('archivo.txt', 'utf-8') .then(data => console.log(data)); // ✅ Con async/await (parece síncrono pero no bloquea) async function leer() { const data = await fs.promises.readFile('archivo.txt', 'utf-8'); console.log(data); } // Comparación visual: // Síncrono: [Tarea1]───────>[Tarea2]───────>[Tarea3] // Asíncrono: [Tarea1]─┐ // [Tarea2]─┼─>[Todas completas] // [Tarea3]─┘ // JavaScript es single-threaded pero asíncrono // gracias al Event Loop