Skip to content

Commit e46de88

Browse files
committed
#21 - Callbacks
1 parent ffd35a1 commit e46de88

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""
2+
* EJERCICIO:
3+
* Explora el concepto de callback en tu lenguaje creando un ejemplo
4+
* simple (a tu elección) que muestre su funcionamiento.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Crea un simulador de pedidos de un restaurante utilizando callbacks.
8+
* Estará formado por una función que procesa pedidos.
9+
* Debe aceptar el nombre del plato, una callback de confirmación, una
10+
* de listo y otra de entrega.
11+
* - Debe imprimir un confirmación cuando empiece el procesamiento.
12+
* - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
13+
* procesos.
14+
* - Debe invocar a cada callback siguiendo un orden de procesado.
15+
* - Debe notificar que el plato está listo o ha sido entregado.
16+
"""
17+
import random
18+
import time
19+
import threading # Se usa para trabajar con hilos
20+
21+
def saludo(nombre:str):
22+
print('Ejecutando el proceso de saludar')
23+
print(f'Hola {nombre}!!')
24+
25+
def saludar(nombre:str, callback): # Callback, función que recibe como parámetro otra función
26+
print('Llamando al proceso de saludar')
27+
callback(nombre)
28+
29+
saludar('Luis',saludo) # Se llama a la función saludar, que recibe el callback
30+
31+
# EXTRA
32+
def procesarPedido(comida:str, confirmar_callback, listo_callback, entregado_callback):
33+
def procesar(): # Creamos esta función recursiva para ejecutar el hilo. Ejecución multihilo
34+
print(f'Comenzando el proceso de preparación de {comida}')
35+
time.sleep(random.randint(1, 10)) # Paramos entre 1 y 10 segundos la ejecución
36+
confirmar_callback(comida)
37+
time.sleep(random.randint(1, 10))
38+
listo_callback(comida)
39+
time.sleep(random.randint(1, 10))
40+
entregado_callback(comida)
41+
threading.Thread(target=procesar).start() #Ejecutamos el hilo
42+
43+
def confirmarPedido(comida:str):
44+
print(f'Pedido {comida} confirmado!!!')
45+
46+
def listoPedido(comida:str):
47+
print(f'Pedido {comida} listo para enviar!!!')
48+
49+
def entregadoPedido(comida:str):
50+
print(f'Pedido {comida} ha sido entregado!!!')
51+
52+
procesarPedido('Churrasco', confirmarPedido, listoPedido, entregadoPedido)
53+
procesarPedido('Callos', confirmarPedido, listoPedido, entregadoPedido)
54+
procesarPedido('Carne asada', confirmarPedido, listoPedido, entregadoPedido)
55+
procesarPedido('Tortilla de patatas con cebolla', confirmarPedido, listoPedido, entregadoPedido)

0 commit comments

Comments
 (0)