1+ /* 🔥 EJERCICIO:
2+ Explora el concepto de callback en tu lenguaje creando un ejemplo
3+ simple (a tu elección) que muestre su funcionamiento.
4+ */
5+
6+ function saludar ( nombre , callback ) {
7+ console . log ( `Procesando saludo para ${ nombre } ...` )
8+ setTimeout ( ( ) => {
9+ const mensaje = `¡Hola, ${ nombre } !`
10+ callback ( mensaje ) // Invocamos el callback con el resultado
11+ } , 2000 )
12+ }
13+
14+ // Callback que maneja el resultado
15+ function mostrarMensaje ( mensaje ) {
16+ console . log ( mensaje ) ;
17+ }
18+
19+ saludar ( "Anderson" , mostrarMensaje ) ;
20+ // Procesando saludo para Anderson...
21+ // ¡Hola, Anderson!
22+
23+
24+
25+ /* 🔥 DIFICULTAD EXTRA (opcional): ----------------------------------------------------------------
26+ Crea un simulador de pedidos de un restaurante utilizando callbacks.
27+ Estará formado por una función que procesa pedidos.
28+ Debe aceptar el nombre del plato, una callback de confirmación, una
29+ de listo y otra de entrega.
30+ - Debe imprimir un confirmación cuando empiece el procesamiento.
31+ - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
32+ procesos.
33+ - Debe invocar a cada callback siguiendo un orden de procesado.
34+ - Debe notificar que el plato está listo o ha sido entregado.
35+ */
36+
37+ // Principal que procesa pedidos
38+ function procesarPedido ( plato , confirmacionCallback , listoCallback , entregaCallback ) {
39+ console . log ( `Iniciando procesamiento del pedido: ${ plato } ` )
40+
41+ // Paso 1: Confirmación del pedido
42+ confirmacionCallback ( plato )
43+
44+ // Paso 2: Simular tiempo para preparar el plato
45+ const tiempoPreparacion = Math . floor ( Math . random ( ) * 10 + 1 ) * 1000 // Entre 1 y 10 segundos
46+ setTimeout ( ( ) => {
47+ console . log ( `Plato "${ plato } " está siendo preparado...` )
48+ listoCallback ( plato ) // Notificar que el plato está listo
49+
50+ // Paso 3: Simular tiempo para entregar el plato
51+ const tiempoEntrega = Math . floor ( Math . random ( ) * 10 + 1 ) * 1000 // Entre 1 y 10 segundos
52+ setTimeout ( ( ) => {
53+ entregaCallback ( plato ) // Notificar que el plato ha sido entregado
54+ } , tiempoEntrega )
55+ } , tiempoPreparacion )
56+ }
57+
58+ // Callbacks específicos
59+ function confirmarPedido ( plato ) {
60+ console . log ( `[Confirmación] Pedido recibido para el plato: ${ plato } ` )
61+ }
62+
63+ function notificarListo ( plato ) {
64+ console . log ( `[Listo] El plato "${ plato } " está listo para ser entregado.` )
65+ }
66+
67+ function notificarEntregado ( plato ) {
68+ console . log ( `[Entregado] El plato "${ plato } " ha sido entregado al cliente.` )
69+ }
70+
71+ procesarPedido ( "Pizza Margherita" , confirmarPedido , notificarListo , notificarEntregado )
72+ // Procesando saludo para Anderson...
73+ // Iniciando procesamiento del pedido: Pizza Margherita
74+ // [Confirmación] Pedido recibido para el plato: Pizza Margherita
75+ // ¡Hola, Anderson!
76+ // Plato "Pizza Margherita" está siendo preparado...
77+ // [Listo] El plato "Pizza Margherita" está listo para ser entregado.
78+ // [Entregado] El plato "Pizza Margherita" ha sido entregado al cliente.
0 commit comments