CodeForge

JavaScript de Cero a Experto / Asincronía I

Reto: Mi Bolsillo en la nube (simulada)

Reto35 min60 XP

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

Media30 min60 XP(×2 sin mirar la solución)

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:

terminal

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:

  1. esperar(ms) promisificada: new Promise + setTimeout, tus tres líneas de la lección 5.
  2. El servidor simulado, construido SOBRE esperar (nada de setTimeout directo aquí): cargarTitular() tarda 1000ms y resuelve titular con nombre "Sara" y ciudad "Bogotá"; cargarGastos(mes) imprime "Cargando gastos de mes...", 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 un Error cuyo mensaje incluya el mes pedido.
  3. 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 con reduce y lo imprime formateado con tu Intl es-CO. Un solo .catch (imprime "Error: " + mensaje) y un .finally (la línea de cierre).
  4. consultar RETORNA su cadena, y las dos consultas se encadenan afuera: primero julio completo, DESPUÉS junio — si los logs se entrelazan, está mal.
  5. El total pasa de un .then al siguiente como testimonio: un .then lo calcula y lo retorna, el siguiente lo formatea e imprime.

Reglas

  • Solo .then / .catch / .finally — nada de async/await (llega en el módulo 10) y CERO callbacks anidados: si un then contiene otro nivel de then colgado adentro sin return, es la pirámide otra vez.
  • El rechazo de cargarGastos debe nacer DENTRO de la cadena (pista: throw), no de un reject con setTimeout aparte.
  • 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.