DDS - (3 de 3) Javascript
DDS - (3 de 3) Javascript
Javascript
Universidad Tecnológica Nacional
Facultad Regional Córdoba
Cátedra: Desarrollo de Software
Programación síncrona vs asíncrona
JavaScript Síncrono
● Cada operación se hace de una vez, bloqueando el flujo de ejecución, el hilo es
bloqueado mientras espera la respuesta, cuando esta se procesa pasa a la siguiente
operación y así sucesivamente al terminar todas las operaciones.
console.log("Inicio proceso");
function procesoSecundario() {
console.log("Etapa 2 del proceso");
}
function procesoPrincipal() {
console.log("Etapa 1 del proceso");
procesoSecundario(); //llamada síncrona
console.log("Etapa 3 del proceso");
}
procesoPrincipal();
console.log("Fin");
JavaScript y su modelo de un solo hilo (Single Thread)
(Single Thread): en el contexto de JavaScript, significa que sólo un conjunto de
instrucciones se ejecuta a la vez en un único hilo de ejecución.
● Características:
○ JavaScript es un lenguaje de programación single-threaded
○ Opera en un único hilo en el entorno de ejecución (navegador o Node.js)
○ Las tareas se ejecutan secuencialmente y no en paralelo
● Modelo de ejecución basado en Event Loop:El bucle de eventos (Event Loop) es
el mecanismo utilizado para manejar tareas asíncronas y eventos en JavaScript
● Procesa tareas en la pila de llamadas (Call Stack) y en la cola de tareas (Task
Queue)
● Permite que JavaScript maneje operaciones asíncronas sin bloquear el hilo
principal
¿Cómo funciona con un solo thread javascript
de manera asincrónica?
JavaScript Asíncrono
function mensaje() {
console.log('Proceso asíncrono que se ejecuto a las ' +
(new Date()).toLocaleTimeString());
}
function leerArchivo(callback) {
// Simulando lectura de archivo
setTimeout(() => {
const resultado = 'Contenido del
archivo'; Realizamos un callback
callback(resultado);
}, 1000);
}
Pasamos una arrow
leerArchivo((contenido) => { function como parámetro
console.log(contenido);}
Callbacks - Problemas
Callback Hell: término utilizado para describir el anidamiento profundo y excesivo
de funciones callback en el código, lo que puede resultar en una estructura de
código difícil de leer, mantener y depurar.
Causas:
leerArchivo()
.then((contenido) => {
console.log(contenido);
})
.catch((error) => {
console.error(error);
});
Función fetch para obtener datos con HTTP
(implementa modelo de promesas)
if (!response.ok) {
throw new Error(`Error en la solicitud: $
{response.status}`);
}
fetchData('https://pokeapi.co/api/v2/pokemon/');