M02L13Semana 4~2.5 h
L13 — Promises y el modelo mental async
~2.5 h · Semana 4
Entiendes la cola de microtareas, encadenas .then/.catch y por qué loadEstado ya era async sin magia.
Objetivo
Escribir utilidades con Promises y explicar sync vs async en tus propias palabras (bitácora).
Por qué importa
Fetch, fs y la CLI concurrente comparten el mismo modelo. Sin esto, await es superstición.
Pasos
1. Delay y secuencia (45 min)
src/async/delay.ts:
export function delay(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export function pasos(): Promise<string[]> {
const log: string[] = [];
return delay(10)
.then(() => {
log.push("uno");
return delay(10);
})
.then(() => {
log.push("dos");
return log;
});
}
Demo con pasos().then(console.log).
2. Promisificar lectura (40 min)
Refactoriza una función sync pequeña a Promise manualmente (ej. validar archivo existe) antes de usar solo fs/promises.
3. EJ cap. 11 — primera mitad (50 min)
Lee hasta Promises; 1 ejercicio del capítulo.
4. Nota conceptual (15 min)
En bitácora: 5 líneas sync vs async con ejemplo de tu CLI.
Lectura de esta lección
| Fuente | Qué leer |
|---|---|
| Eloquent JavaScript | Cap. 11 (inicio) |
| MDN | Promise |
| Catálogo | Bibliografía · M02 |
Hecho cuando
delayypasosfuncionan; entiendes el orden de impresión.- Nota sync vs async escrita.
- Sin mezclar callbacks y Promises en el mismo flujo sin razón.
Errores comunes
- Olvidar
returndentro de.then(cadena rota). new Promisesinrejecten errores reales.- Bloquear el hilo con trabajo pesado sync “porque async”.