Este es un tema muy importante porque los futuros o los futuros es algo imprescindible cuando nosotros
estamos realizando tareas asíncronas para las personas que vienen de JavaScript o lenguajes de programación
donde existen las promesas.
Es exactamente lo mismo pero para las personas que nunca han visto una promesa o en este caso los futuros
yo no les voy a volver a decir promesas pero ustedes mentalicé hacerlo si ya lo conocen.
Déjenme mostrarles este ejemplo el señor que está pidiendo aquí no sé en la hamburguesa o la malteado
o lo que sea que vaya a comprar seríamos nosotros la cajera la persona que se encuentra ahí y ella es
la persona que tiene que prepararnos el helado o la hamburguesa o todas las cosas cuando nosotros le
damos la instrucción a ella de que creemos que yo una malteada.
Ella recibe la orden y comienza a hacer la malteada pero nosotros podemos seguir con nuestra vida podemos
irnos ausentar podemos ir a ver nuestro celular hablar con la persona que nos acompañó etcétera.
Nosotros podemos seguir haciendo cualquier otra actividad en nuestro día a día y la muchacha nos va
a avisar cuando nuestra malteada está lista y cuando la malteada está lista entonces nosotros vamos
a ir y la vamos a recoger y se acabó el asunto.
Eso es el concepto de un fichero.
Es una tarea asíncrona que se hace en un hilo independiente al hilo principal que estamos ejecutando.
Y cuando se resuelve entiéndase resolución es cuando ya obtenemos el valor de regreso nosotros podemos
obtenerlo y seguir ejecutando otras partes de nuestro programa.
Recuerden que también los ficheros pueden dar errores pero eso lo vamos a manejar un poco más adelante
cuando ya estemos trabajando con ellos.
Ahora voy a hacer un ejercicio acá que nos permita trabajar con ficheros.
Lamentablemente yo no puedo hacer peticiones HTTP a Apis desde DARPA pero eso lo vamos a hacer más adelante
en el curso por los momentos yo voy a crearme un fichero pero esto no es necesario que ustedes lo escriban
simplemente quiero demostrarlo.
Voy a crearme una función llamada HTTP GET ok simulando una petición HTTP pero ustedes saben que esto
va a ser ficticio.
Yo voy a recibir un ring con el R.L que yo necesito llamar para especificar que esta función regresa
un Puchol es con la siguiente palabra.
Si yo no dejo así como está estoy regresando un futuro genérico.
O sea estoy regresando.
Una instrucción que va a retornar algo en un futuro y ese retorno puede ser cualquier cosa puede ser
un booleano puede ser un string puede ser un objeto puede ser cualquier cosa.
Entonces yo voy a especificar de que va a regresar un string.
Si ahora dejo el mouse sobre el HTTP van a decir que esto es un hecho que me va a resolver un swing
excelente ahora literalmente hagamos ese hecho hagamos una tarea que demore unos segundos y me responda
algo.
Entonces punto dile que esto es una función que traen los muchos para realizar una tarea.
Cuando se termina cierta cantidad de tiempo para eso voy a mandar un argumento que es la duración.
Esto no se preocupen ya lo vamos a ver más en detalle más adelante que va a tener una duración puedo
poner un new duration y voy a especificar los segundos.
Quiero que resuelva en 4 segundos seconds unos cuatro segundos.
Ahora el segundo argumento que tiene acá es el Kovac o la función que yo necesito ejecutar o que yo
voy a ejecutar cuando pasen esos cuatro segundos.
Eso lo único que va a hacer es retornar de un Hola mundo punto y coma.
Yo sé que este código tal vez se mirará un poco extraño pero si ustedes son capaces de despedazar con
todo lo que hemos visto hasta el momento observemos.
Es una función.
El fútbol no es más que un tipo de retorno de datos es como una lista es como un mapa es exactamente
igual a un objeto qué me va a retornar un string luego.
Este es el retorno.
Este es el retorno de esta función.
Por eso hay que especificarlo.
Esto va a regresar en un futuro luego esto que está aquí adentro es un argumento que le estamos mandando
a el constructor dile que es un constructor que tiene el fútbol pero es un constructor con nombre.
Luego tenemos aquí una nueva instancia del duration es básicamente eso esa nueva instancia que estoy
creando de duration pide los segundos como argumentos y esos segundos cuatro es un argumento o un argumento
con un nombre que está recibiendo ese constructor.
Eso es todo y esto es una función anónima.
Tal vez esto es lo único que no hemos hablado pero esto es una simple función un Kopa como ustedes quieran
llamarlo y esa función lo único que hace es retornar el Hola Mundo Perfecto.
Igual no pretendo que ustedes comprendan esto en este instante cuando nosotros hagamos los ejercicios
de hacer peticiones HTTP.
Ahí va a quedar más claro vamos a utilizar ese fichero que acabo de crear.
Hagamos el volumen paréntesis ahora hicieron llaves.
Ok acá adentro voy a decir lo siguiente primero print voy a colocar aquí un mensaje que diga estamos
a punto de pedir datos coma aquí voy a llamar mi petición HTTP Lockett o HTTP HTTP que parentesis a
el API del HTTP s 2.2 o las islas API punto Naza punto com las aliens o el nombre que sea esto no importa
si ustedes observan no estoy haciendo nada con ese Werfel simplemente es para que parezca lo más parecido
a la realidad.
Ok aquí después de esa llamada HTTP voy a colocar otro mensaje que diga print última línea.
La idea o lo que quiero que ustedes observen es que los ficheros se ejecutan en otra línea del tiempo
cuando yo esté ejecutando esté Main.
Esta línea de ejecutar esta línea se va a ejecutar por consecuencia se va a imprimir esta se va a disparar
pero como corresponde a un fichero esto va a empezar a trabajar por su nuevo hilo del tiempo y vamos
a imprimir posteriormente.
Justo después de ejecutar esta línea va a imprimir este última línea.
Pero qué pasa con la respuesta.
Esto qué pasa con esta resolución.
Recuerden que esto es un hecho que resuelve un string para consumir ese string producto de esa petición.
Es un punto para procesar cuando ese flujo se resuelve.
Aquí viene paréntesis recibiríamos el argumento que ustedes quieren que reciben acá le voy a poner de
nombre data pero lo van a poner entre paréntesis ups entre paréntesis abren y cierran llaves entrantes.
Aquí voy a hacer un print de la data que estoy recibiendo cuando se resuelve esto.
También tenemos el catch por si acaso ustedes quieren manejar un error.
Voy a poner aquí un catch está el caucheros.
Ya llegaremos a eso en su momento por los momentos no quiero confundirnos mucho.
Ok entonces hacemos el llamado HTTP y cuando se resuelva cuatro segundos después vamos a imprimir el
Hola Mundo vamos a ver si esto funciona.
Voy a tocar el botón de Room deberíamos de ver el mensaje rápidamente.
Estamos a punto de pedir data.
Ok se dispara la última línea.
Perfecto.
Cuatro segundos después aparece el Hola Mundo.
Eso es un futuro.
Es una tarea síncrona que se realiza al tiempo que nos va a notificar cuando se resuelva o cuando suceda
algún error lo vamos a dejar así y continuamos con la siguiente clase.