JavaScript de Cero a Experto / Asincronía I
Reto: Mi Bolsillo en la nube (simulada)
Vas a construir la consulta remota de "Mi Bolsillo" completa: un servidor simulado con promesas, una cadena que transforma datos paso a paso, un rechazo controlado y una salida de consola impecable. Es el flujo exacto que en el módulo 10 harás contra servidores REALES — hoy lo dominas con uno de mentiras que se comporta igual.
Reto
Mi Bolsillo en la nube
Qué debes construir
Un script que consulta el mes de julio (existe) y luego el de junio (no existe), imprimiendo EXACTAMENTE esto — en este orden y sin mezclarse:
Conectando con Mi Bolsillo...
Titular: Sara (Bogotá)
Cargando gastos de julio...
3 gastos encontrados
Total: $ 28.300
— consulta finalizada —
Conectando con Mi Bolsillo...
Titular: Sara (Bogotá)
Cargando gastos de junio...
Error: No hay datos del mes "junio"
— consulta finalizada —
Requisitos:
esperar(ms)promisificada:new Promise+setTimeout, tus tres líneas de la lección 5.- El servidor simulado, construido SOBRE
esperar(nada desetTimeoutdirecto aquí):cargarTitular()tarda 1000ms y resuelvetitularcon nombre "Sara" y ciudad "Bogotá";cargarGastos(mes)imprime "Cargando gastos demes...", tarda 1500ms y — solo si el mes es "julio" — entrega los 3 gastos (Almuerzo 18000, Bus 5800, Café 4500); cualquier otro mes debe terminar en RECHAZO con unErrorcuyo mensaje incluya el mes pedido. consultar(mes)arma la cadena completa: imprime "Conectando...", carga el titular (imprime "Titular: nombre (ciudad)"), carga los gastos, imprime cuántos llegaron, calcula el total conreducey lo imprime formateado con tuIntles-CO. Un solo.catch(imprime "Error: " + mensaje) y un.finally(la línea de cierre).consultarRETORNA su cadena, y las dos consultas se encadenan afuera: primero julio completo, DESPUÉS junio — si los logs se entrelazan, está mal.- El total pasa de un
.thenal siguiente como testimonio: un.thenlo calcula y lo retorna, el siguiente lo formatea e imprime.
Reglas
- Solo
.then/.catch/.finally— nada deasync/await(llega en el módulo 10) y CERO callbacks anidados: si unthencontiene otro nivel dethencolgado adentro sinreturn, es la pirámide otra vez. - El rechazo de
cargarGastosdebe nacer DENTRO de la cadena (pista:throw), no de unrejectconsetTimeoutaparte. - La plata solo la formatea
Intl.
30:00
Cuando estés listo, arranca el reloj.
Qué sigue
Módulo 9 cerrado: event loop, callbacks, promesas y cadenas — la mecánica
completa de la asincronía. El módulo 10 la pone bonita y la conecta al
mundo: async/await (tus cadenas con ropa de código normal), los
combinadores Promise.all y compañía, y fetch — por fin, datos de
SERVIDORES REALES en tu código.