Skip to content

Commit 253eba8

Browse files
authored
Merge pull request #7967 from adrs1166ma/main
#21 - javascript
2 parents 0e5fa04 + 681a456 commit 253eba8

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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

Comments
 (0)