|
| 1 | +import time |
| 2 | + |
| 3 | + |
| 4 | +# Función simulada que toma un tiempo para completarse |
| 5 | +def funcion_asincrona(callback): |
| 6 | + print("La función asincrónica está realizando alguna tarea...") |
| 7 | + time.sleep(2) # Simulando una tarea que toma tiempo |
| 8 | + print("La función asincrónica ha completado su tarea.") |
| 9 | + callback() # Llamada al callback después de completar la tarea |
| 10 | + |
| 11 | + |
| 12 | +# Callback que se ejecutará después de que la función asincrónica termine |
| 13 | +def mi_callback(): |
| 14 | + print("¡El callback ha sido llamado!") |
| 15 | + |
| 16 | + |
| 17 | +# Llamada a la función asincrónica pasando el callback como argumento |
| 18 | +funcion_asincrona(mi_callback) |
| 19 | + |
| 20 | + |
| 21 | +# Ejercicio extra |
| 22 | + |
| 23 | +import random |
| 24 | + |
| 25 | + |
| 26 | +# Función de procesamiento de pedidos |
| 27 | +def procesar_pedido( |
| 28 | + nombre_plato, callback_confirmacion, callback_listo, callback_entrega |
| 29 | +): |
| 30 | + # Confirmar que el pedido ha sido recibido |
| 31 | + print(f"Recibiendo el pedido para: {nombre_plato}") |
| 32 | + callback_confirmacion(nombre_plato) |
| 33 | + |
| 34 | + # Simular tiempo de preparación |
| 35 | + tiempo_preparacion = random.randint(1, 10) |
| 36 | + time.sleep(tiempo_preparacion) |
| 37 | + |
| 38 | + # Notificar que el plato está listo |
| 39 | + print( |
| 40 | + f"El plato {nombre_plato} está listo después de {tiempo_preparacion} segundos." |
| 41 | + ) |
| 42 | + callback_listo(nombre_plato) |
| 43 | + |
| 44 | + # Simular tiempo de entrega |
| 45 | + tiempo_entrega = random.randint(1, 10) |
| 46 | + time.sleep(tiempo_entrega) |
| 47 | + |
| 48 | + # Notificar que el plato ha sido entregado |
| 49 | + print( |
| 50 | + f"El plato {nombre_plato} ha sido entregado después de {tiempo_entrega} segundos." |
| 51 | + ) |
| 52 | + callback_entrega(nombre_plato) |
| 53 | + |
| 54 | + |
| 55 | +# Callbacks |
| 56 | +def confirmacion_pedido(nombre_plato): |
| 57 | + print( |
| 58 | + f"Confirmación: El pedido para {nombre_plato} ha sido recibido y está en proceso." |
| 59 | + ) |
| 60 | + |
| 61 | + |
| 62 | +def plato_listo(nombre_plato): |
| 63 | + print(f"Notificación: El pedido para {nombre_plato} está listo para servir.") |
| 64 | + |
| 65 | + |
| 66 | +def entrega_pedido(nombre_plato): |
| 67 | + print(f"Notificación: El pedido para {nombre_plato} ha sido entregado al cliente.") |
| 68 | + |
| 69 | + |
| 70 | +# Ejemplo |
| 71 | +procesar_pedido("Pizza", confirmacion_pedido, plato_listo, entrega_pedido) |
| 72 | +procesar_pedido("Hamburguesa", confirmacion_pedido, plato_listo, entrega_pedido) |
| 73 | +procesar_pedido("Ensalada", confirmacion_pedido, plato_listo, entrega_pedido) |
0 commit comments